[Bug target/30961] [4.2/4.3 regression] redundant reg/mem stores/moves

2007-05-13 Thread hjl at lucon dot org
--- Comment #13 from hjl at lucon dot org 2007-05-13 20:08 --- Created an attachment (id=13550) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=13550&action=view) An experimental patch This patch works for the testcase. Testsuite results for ia32, Intel64 and ia64 are at http://gcc

[Bug target/30961] [4.2/4.3 regression] redundant reg/mem stores/moves

2007-05-12 Thread hjl at lucon dot org
--- Comment #12 from hjl at lucon dot org 2007-05-13 06:36 --- find_reg computes the cost of moving to target register too high. This kludge adjusts the cost of moving to target register and seems to work for the testcase: --- gcc/reload1.c.sse 2007-04-27 05:46:12.0 -0700 +++

[Bug target/30961] [4.2/4.3 regression] redundant reg/mem stores/moves

2007-05-12 Thread hjl at lucon dot org
--- Comment #11 from hjl at lucon dot org 2007-05-12 22:27 --- find_reloads gets (insn:HI 6 3 10 2 x.i:2 (set (reg:SF 21 xmm0 [orig:58 ] [58]) (subreg:SF (reg/v:SI 5 di [orig:59 in ] [59]) 0)) 90 {*movsf_1} (insn_list:REG_DEP_TRUE 2 (nil)) (expr_list:REG_DEAD (reg/v:SI 5 di

[Bug target/30961] [4.2/4.3 regression] redundant reg/mem stores/moves

2007-05-12 Thread hjl at lucon dot org
--- Comment #10 from hjl at lucon dot org 2007-05-12 19:03 --- Gcc 4.3 gives the same output for float convert1( unsigned in ) { float f; __builtin_memcpy( &f, &in, sizeof( in ) ); return f; } float convert2( unsigned in ) { union { float f; un

[Bug target/30961] [4.2/4.3 regression] redundant reg/mem stores/moves

2007-05-12 Thread steven at gcc dot gnu dot org
--- Comment #9 from steven at gcc dot gnu dot org 2007-05-12 18:47 --- I also looked at "load" but it is fixed on the dataflow branch, which will be merged into the trunk soon (and thereby fixing this bug). -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30961

[Bug target/30961] [4.2/4.3 regression] redundant reg/mem stores/moves

2007-05-12 Thread hjl at lucon dot org
--- Comment #8 from hjl at lucon dot org 2007-05-12 18:24 --- The unsigned short load( void* p ) { unsigned short v; __builtin_memcpy( &v, p, sizeof( v ) ); return v; } regression was introduced by http://gcc.gnu.org/ml/gcc-cvs/2005-07/msg00192.html -- hjl

[Bug target/30961] [4.2/4.3 regression] redundant reg/mem stores/moves

2007-05-11 Thread steven at gcc dot gnu dot org
--- Comment #7 from steven at gcc dot gnu dot org 2007-05-11 21:42 --- This bug is beyond my regalloc/reload fu, so unassigning... -- steven at gcc dot gnu dot org changed: What|Removed |Added ---

[Bug target/30961] [4.2/4.3 regression] redundant reg/mem stores/moves

2007-05-11 Thread steven at gcc dot gnu dot org
--- Comment #6 from steven at gcc dot gnu dot org 2007-05-11 18:28 --- Note that with SVN gcc 4.3 (20070506) lreg actually _does_ tie reg 58 and reg 21 in lreg: ;; Register 58 in 21. ;; Register 59 in 5. But we then fail due to the confict, I think. -- http://gcc.gnu.org/bugzilla/s

[Bug target/30961] [4.2/4.3 regression] redundant reg/mem stores/moves

2007-05-11 Thread steven at gcc dot gnu dot org
--- Comment #5 from steven at gcc dot gnu dot org 2007-05-11 18:26 --- For gcc 3.4, same function convert, lreg: ;; Register 60 in 5. ;; Register 62 in 0. (note:HI 2 0 27 NOTE_INSN_DELETED) ;; Start of basic block 0, registers live: 5 [di] 6 [bp] 7 [sp] 16 [argp] 20 [frame] (note:HI 2

[Bug target/30961] [4.2/4.3 regression] redundant reg/mem stores/moves

2007-05-11 Thread steven at gcc dot gnu dot org
--- Comment #4 from steven at gcc dot gnu dot org 2007-05-11 18:22 --- For "convert" the issue is caused by a decision that reload makes, but I don't understand why. The .lreg dump is this: ;; Start of basic block 2, registers live: 5 [di] 6 [bp] 7 [sp] 16 [argp] 20 [frame] ;; Pred edg

[Bug target/30961] [4.2/4.3 regression] redundant reg/mem stores/moves

2007-04-11 Thread steven at gcc dot gnu dot org
--- Comment #3 from steven at gcc dot gnu dot org 2007-04-11 22:40 --- investigating... -- steven at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|u

[Bug target/30961] [4.2/4.3 regression] redundant reg/mem stores/moves

2007-04-11 Thread pluto at agmk dot net
--- Comment #2 from pluto at agmk dot net 2007-04-11 20:00 --- 4.2.0-RC1 has the same bug. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30961