aboutsummaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2005-09-06 10:53:11 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2005-09-06 10:53:11 +0200
commit1c653a41cf6b763a1506679082e4743641a5e3b5 (patch)
tree56b6457372e7ce447bcc0d30ab7f7fd8beeec6d3 /gcc/config
parent70a640af36dabccba824de7661405b5667ea57c7 (diff)
downloadgcc-1c653a41cf6b763a1506679082e4743641a5e3b5.zip
gcc-1c653a41cf6b763a1506679082e4743641a5e3b5.tar.gz
gcc-1c653a41cf6b763a1506679082e4743641a5e3b5.tar.bz2
re PR rtl-optimization/23098 (store of 0.0 to float)
PR rtl-optimization/23098 * cse.c (fold_rtx_mem): Call delegitimize_address target hook. * simplify-rtx.c (constant_pool_reference_p): New function. * rtl.h (constant_pool_reference_p): New prototype. * config/i386/i386.md (pushf split, mov[sdx]f split): Use constant_pool_reference_p in condition and avoid_constant_pool_reference in preparation statements. * gcc.target/i386/pr23098.c: New test. From-SVN: r103935
Diffstat (limited to 'gcc/config')
-rw-r--r--gcc/config/i386/i386.md10
1 files changed, 4 insertions, 6 deletions
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 88440d6..c1d455a 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -2247,11 +2247,10 @@
(match_operand:SF 1 "memory_operand" ""))]
"reload_completed
&& GET_CODE (operands[1]) == MEM
- && GET_CODE (XEXP (operands[1], 0)) == SYMBOL_REF
- && CONSTANT_POOL_ADDRESS_P (XEXP (operands[1], 0))"
+ && constant_pool_reference_p (operands[1])"
[(set (match_dup 0)
(match_dup 1))]
- "operands[1] = get_pool_constant (XEXP (operands[1], 0));")
+ "operands[1] = avoid_constant_pool_reference (operands[1]);")
;; %%% Kill this when call knows how to work this out.
@@ -2861,11 +2860,10 @@
&& GET_CODE (operands[1]) == MEM
&& (GET_MODE (operands[0]) == XFmode
|| GET_MODE (operands[0]) == SFmode || GET_MODE (operands[0]) == DFmode)
- && GET_CODE (XEXP (operands[1], 0)) == SYMBOL_REF
- && CONSTANT_POOL_ADDRESS_P (XEXP (operands[1], 0))"
+ && constant_pool_reference_p (operands[1])"
[(set (match_dup 0) (match_dup 1))]
{
- rtx c = get_pool_constant (XEXP (operands[1], 0));
+ rtx c = avoid_constant_pool_reference (operands[1]);
rtx r = operands[0];
if (GET_CODE (r) == SUBREG)