[Bug rtl-optimization/18463] [4.0 Regression] Moving floating point through an integer register

2004-11-25 Thread cvs-commit at gcc dot gnu dot org

--- 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

2004-11-13 Thread pinskia at gcc dot gnu dot org

--- 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

2004-11-13 Thread steven at gcc dot gnu dot org

--- 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