diff options
author | Richard Guenther <rguenther@suse.de> | 2011-10-19 14:54:34 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2011-10-19 14:54:34 +0000 |
commit | dd46054a5f6243d441fc1564de173a858ea4e3d4 (patch) | |
tree | 02c66940d76557ca76c3cfc4affa106d1affc4c2 /gcc/tree-eh.c | |
parent | 9aaa9e894a57c0a9b30b6a0bbdaceb293f41798e (diff) | |
download | gcc-dd46054a5f6243d441fc1564de173a858ea4e3d4.zip gcc-dd46054a5f6243d441fc1564de173a858ea4e3d4.tar.gz gcc-dd46054a5f6243d441fc1564de173a858ea4e3d4.tar.bz2 |
re PR tree-optimization/50780 (ICE: verify_gimple failed: invalid operands in ternary operation with -ftree-vectorize -fnon-call-exceptions)
2011-10-19 Richard Guenther <rguenther@suse.de>
PR middle-end/50780
* tree-ssa-forwprop.c (forward_propagate_into_cond): Verify
the condition is properly gimple before using it.
* tree-eh (stmt_could_throw_1_p): Properly extract the
operation type from comparisons.
From-SVN: r180192
Diffstat (limited to 'gcc/tree-eh.c')
-rw-r--r-- | gcc/tree-eh.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/gcc/tree-eh.c b/gcc/tree-eh.c index f751d8d..c1896be 100644 --- a/gcc/tree-eh.c +++ b/gcc/tree-eh.c @@ -2512,7 +2512,13 @@ stmt_could_throw_1_p (gimple stmt) || TREE_CODE_CLASS (code) == tcc_unary || TREE_CODE_CLASS (code) == tcc_binary) { - t = gimple_expr_type (stmt); + if (is_gimple_assign (stmt) + && TREE_CODE_CLASS (code) == tcc_comparison) + t = TREE_TYPE (gimple_assign_rhs1 (stmt)); + else if (gimple_code (stmt) == GIMPLE_COND) + t = TREE_TYPE (gimple_cond_lhs (stmt)); + else + t = gimple_expr_type (stmt); fp_operation = FLOAT_TYPE_P (t); if (fp_operation) { |