diff options
author | Jakub Jelinek <jakub@redhat.com> | 2005-09-06 10:53:11 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2005-09-06 10:53:11 +0200 |
commit | 1c653a41cf6b763a1506679082e4743641a5e3b5 (patch) | |
tree | 56b6457372e7ce447bcc0d30ab7f7fd8beeec6d3 /gcc/config | |
parent | 70a640af36dabccba824de7661405b5667ea57c7 (diff) | |
download | gcc-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.md | 10 |
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) |