diff options
Diffstat (limited to 'gcc/tree-eh.c')
-rw-r--r-- | gcc/tree-eh.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/gcc/tree-eh.c b/gcc/tree-eh.c index 202073d3534..e3341b1bcb8 100644 --- a/gcc/tree-eh.c +++ b/gcc/tree-eh.c @@ -1889,13 +1889,14 @@ tree_could_trap_p (tree expr) goto restart; case ARRAY_RANGE_REF: - /* Let us be conservative here for now. We might be checking bounds of - the access similarly to the case below. */ - if (!TREE_THIS_NOTRAP (expr)) + base = TREE_OPERAND (expr, 0); + if (tree_could_trap_p (base)) return true; - base = TREE_OPERAND (expr, 0); - return tree_could_trap_p (base); + if (TREE_THIS_NOTRAP (expr)) + return false; + + return !range_in_array_bounds_p (expr); case ARRAY_REF: base = TREE_OPERAND (expr, 0); |