diff options
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/tree-sra.c | 4 |
2 files changed, 7 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9ccde30..8ec7444 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2007-10-08 Alexandre Oliva <aoliva@redhat.com> + + * tree-sra.c (scalarize_lsdt): Fix thinko in testing whether + the original stmt can throw. + 2007-10-08 Geoffrey Keating <geoffk@apple.com> * config/darwin.h (DARWIN_REGISTER_TARGET_PRAGMAS): Register diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c index 764f70b..fed7fbd 100644 --- a/gcc/tree-sra.c +++ b/gcc/tree-sra.c @@ -2408,7 +2408,7 @@ sra_build_bf_assignment (tree dst, tree src) tmp2 = fold_build1 (BIT_NOT_EXPR, utype, mask); tmp2 = int_const_binop (RSHIFT_EXPR, tmp2, minshift, true); tmp2 = fold_convert (ut, tmp2); - tmp2 = fold_build2 (BIT_AND_EXPR, utype, tmp3, tmp2); + tmp2 = fold_build2 (BIT_AND_EXPR, ut, tmp3, tmp2); if (tmp3 != tmp2) { @@ -3436,7 +3436,7 @@ scalarize_ldst (struct sra_elt *elt, tree other, { tree_stmt_iterator tsi; tree first, blist = NULL; - bool thr = (bsi->bb->flags & EDGE_COMPLEX) != 0; + bool thr = tree_could_throw_p (stmt); /* If the last statement of this BB created an EH edge before scalarization, we have to locate the first |