diff options
author | Richard Guenther <rguenther@suse.de> | 2005-08-01 08:52:59 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2005-08-01 08:52:59 +0000 |
commit | ac264fef2367c4773f4ed4868bdaa13c39b1ab44 (patch) | |
tree | 6c454da7c03895efb5f70d5099fddba16413ef4a /gcc/tree-ssa-loop-im.c | |
parent | 19734dd84e999ade0e315247f0de9e1b176257bb (diff) | |
download | gcc-ac264fef2367c4773f4ed4868bdaa13c39b1ab44.zip gcc-ac264fef2367c4773f4ed4868bdaa13c39b1ab44.tar.gz gcc-ac264fef2367c4773f4ed4868bdaa13c39b1ab44.tar.bz2 |
re PR tree-optimization/23109 (compiler generates wrong code leading to spurious division by zero with -funsafe-math-optimizations (instead of -ftrapping-math))
2005-08-01 Richard Guenther <rguenther@suse.de>
PR tree-optimization/23109
* tree-ssa-math-opts.c (execute_cse_reciprocals_1):
If trapping math is in effect, use post-dominator information
to check if we'd in any case reach a trapping point before
doing the reciprocal insertion.
(execute_cse_reciprocals): Compute post-dominators, if necessary.
* tree-ssa-loop-im.c (determine_invariantness_stmt): RDIV
expressions are invariant only if trapping math is not in effect.
From-SVN: r102627
Diffstat (limited to 'gcc/tree-ssa-loop-im.c')
-rw-r--r-- | gcc/tree-ssa-loop-im.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/tree-ssa-loop-im.c b/gcc/tree-ssa-loop-im.c index e3476c6..9281079 100644 --- a/gcc/tree-ssa-loop-im.c +++ b/gcc/tree-ssa-loop-im.c @@ -610,6 +610,7 @@ determine_invariantness_stmt (struct dom_walk_data *dw_data ATTRIBUTE_UNUSED, && (rhs = TREE_OPERAND (stmt, 1)) != NULL && TREE_CODE (rhs) == RDIV_EXPR && flag_unsafe_math_optimizations + && !flag_trapping_math && outermost_invariant_loop_expr (TREE_OPERAND (rhs, 1), loop_containing_stmt (stmt)) != NULL && outermost_invariant_loop_expr (rhs, |