aboutsummaryrefslogtreecommitdiff
path: root/gcc/reorg.c
diff options
context:
space:
mode:
authorRichard Sandiford <richard@codesourcery.com>2006-08-14 11:55:52 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2006-08-14 11:55:52 +0000
commit2b3969faee4094c5b857bf024e8ce4b7d832dc2d (patch)
tree708c5891d7f7a0a2c10d910822ab1ea133ae9978 /gcc/reorg.c
parent62eed976f51e31e2998e282ae3aeaa9d615c948b (diff)
downloadgcc-2b3969faee4094c5b857bf024e8ce4b7d832dc2d.zip
gcc-2b3969faee4094c5b857bf024e8ce4b7d832dc2d.tar.gz
gcc-2b3969faee4094c5b857bf024e8ce4b7d832dc2d.tar.bz2
re PR rtl-optimization/28634 (rounding problem with -fdelayed-branch on hppa/mips)
gcc/ PR rtl-optimization/28634 * reorg.c (fill_slots_from_thread): Do not assume A + X - X == A for floating-point modes unless flag_unsafe_math_optimizations. gcc/testsuite/ PR rtl-optimization/28634 * gcc.c-torture/execute/ieee/pr28634.c: New test. From-SVN: r116124
Diffstat (limited to 'gcc/reorg.c')
-rw-r--r--gcc/reorg.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/gcc/reorg.c b/gcc/reorg.c
index 42ecda0..8c097dc 100644
--- a/gcc/reorg.c
+++ b/gcc/reorg.c
@@ -2817,6 +2817,8 @@ fill_slots_from_thread (rtx insn, rtx condition, rtx thread,
dest = SET_DEST (pat), src = SET_SRC (pat);
if ((GET_CODE (src) == PLUS || GET_CODE (src) == MINUS)
&& rtx_equal_p (XEXP (src, 0), dest)
+ && (!FLOAT_MODE_P (GET_MODE (src))
+ || flag_unsafe_math_optimizations)
&& ! reg_overlap_mentioned_p (dest, XEXP (src, 1))
&& ! side_effects_p (pat))
{