[Bug rtl-optimization/18463] [4.0 Regression] Moving floating point through an integer register
--- Additional Comments From cvs-commit at gcc dot gnu dot org 2004-11-25 23:10 --- Subject: Bug 18463 CVSROOT:/cvs/gcc Module name:gcc Changes by: [EMAIL PROTECTED] 2004-11-25 23:10:27 Modified files: gcc: ChangeLog cse.c Log message: 2004-11-25 Andrew Pinski [EMAIL PROTECTED] parts of PR rtl-opt/18463, rtl-opt/17647 * cse.c (canon_for_address): New function. (find_best_addr): Call canon_for_address before getting the address's cost when checking if we should take that address. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gccr1=2.6555r2=2.6556 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cse.c.diff?cvsroot=gccr1=1.325r2=1.326 -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18463
[Bug rtl-optimization/18463] [4.0 Regression] Moving floating point through an integer register
--- Additional Comments From pinskia at gcc dot gnu dot org 2004-11-13 18:46 --- This is a RTL problem as it works correctly on ARM which has it ... I should note that arm's instruction has nothing special in its .md file: (define_insn *arm_movsf_soft_insn [(set (match_operand:SF 0 nonimmediate_operand =r,r,m) (match_operand:SF 1 general_operand r,mE,r))] TARGET_ARM -- What|Removed |Added Component|tree-optimization |rtl-optimization http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18463
[Bug rtl-optimization/18463] [4.0 Regression] Moving floating point through an integer register
--- Additional Comments From steven at gcc dot gnu dot org 2004-11-13 19:34 --- CSE is trying to reconstruct the addressing mode, but it has (plus:SI (ashift:SI (reg/v:SI 61 [ n ]) (const_int 2 [0x2])) (reg/v/f:SI 59 [ a ])) According to hp, the canonical form would be with a mult. Breakpoint 9, ix86_decompose_address (addr=0x401d515c, out=0xbfffec48) at ../../mainline/gcc/config/i386/i386.c:4567 4567{ 1: debug_rtx (addr) = (plus:SI (ashift:SI (reg/v:SI 61 [ n ]) (const_int 2 [0x2])) (reg/v/f:SI 59 [ a ])) void (gdb) bt #0 ix86_decompose_address (addr=0x401d5078, out=0xbfffec78) at ../../mainline/gcc/config/i386/i386.c:4567 #1 0x082ee548 in legitimate_address_p (mode=3221220472, addr=0x401d5078, strict=0) at ../../mainline/gcc/config/i386/i386.c:5064 #2 0x0828ec5e in memory_address_p (mode=3221220472, addr=0xbfffec78) at ../../mainline/gcc/recog.c:1268 #3 0x0828ed5f in general_operand (op=0x401d5084, mode=SFmode) at ../../ mainline/gcc/recog.c:979 #4 0x0828f029 in nonimmediate_operand (op=0x401d5084, mode=3221220472) at ../../mainline/gcc/recog.c:1143 #5 0x08226803 in recog_16 (x0=0x401d50b4, insn=0x4016c230, pnum_clobbers=0x0) at insn-recog.c:16332 #6 0x0828e07c in recog_memoized_1 (insn=0x4016c230) at ../../mainline/gcc/ recog.c:123 #7 0x08121594 in cse_insn (insn=0x4016c230, libcall_insn=0x0) at ../../ mainline/gcc/cse.c:4783 -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18463