Ping: patch to remove the old RA

H.J. Lu hjl.tools@gmail.com
Thu Jan 29 20:32:00 GMT 2009


On Thu, Jan 29, 2009 at 10:33 AM, Vladimir Makarov <vmakarov@redhat.com> wrote:
> H.J. Lu wrote:
>>
>> On Thu, Jan 29, 2009 at 9:21 AM, Vladimir Makarov <vmakarov@redhat.com>
>> wrote:
>>
>>>
>>> H.J. Lu wrote:
>>>
>>>>>>
>>>>>> On Wed, Jan 28, 2009 at 2:12 PM, Vladimir Makarov
>>>>>> <vmakarov@redhat.com>
>>>>>>
>>>>
>>>> Hi Vladimir,
>>>>
>>>> This old RA removal patch also fixed:
>>>>
>>>> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37364
>>>>
>>>> Is this expected? I don't see how removing the old RA will
>>>> change the IRA code generation.
>>>>
>>>>
>>>>
>>>
>>> No, I did not expect this.  I need some time to investigate why this
>>> happened.
>>>
>>>
>>
>> PR 37364 has something to with disabling part of the regmov pass.
>> Is the full regmov pass enabled now?
>>
>>
>>
>>
>
> No, regmove for IRA does the same as before the patch.
>

I saw

--- 143753/pr34256.c.162r.regmove	2009-01-29 12:21:20.000000000 -0800
+++ 143757/pr34256.c.162r.regmove	2009-01-29 12:21:12.000000000 -0800
@@ -5,6 +5,15 @@ starting the processing of deferred insn
 ending the processing of deferred insns
 df_analyze called
 Starting forward pass...
+Starting backward pass...
+Starting backward pass...
+Starting backward pass...
+Could fix operand 1 of insn 8 matching operand 0.
+rescanning insn with uid = 8.
+deleting insn with uid = 8.
+rescanning insn with uid = 7.
+deleting insn with uid = 7.
+Fixed operand 1 of insn 8 matching operand 0.


 foo
@@ -17,7 +26,7 @@ Dataflow summary:
 ;;  entry block defs 	 0 [ax] 1 [dx] 2 [cx] 4 [si] 5 [di] 6 [bp] 7
[sp] 16 [argp] 20 [frame] 21 [xmm0] 22 [xmm1] 23 [xmm2] 24 [xmm3] 25
[xmm4] 26 [xmm5] 27 [xmm6] 28 [xmm7] 37 [r8] 38 [r9] 39 [r10]
 ;;  exit block uses 	 0 [ax] 6 [bp] 7 [sp] 20 [frame]
 ;;  regs ever live 	 0[ax]
-;;  ref usage 	r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u}
r7={1d,2u} r16={1d,1u} r20={1d,2u} r21={1d} r22={1d} r23={1d} r24={1d}
r25={1d} r26={1d} r27={1d} r28={1d} r37={1d} r38={1d} r39={1d}
r61={1d,1u} r63={1d,1u}
+;;  ref usage 	r0={2d,2u} r1={1d} r2={1d} r4={1d} r5={1d} r6={1d,2u}
r7={1d,2u} r16={1d,1u} r20={1d,2u} r21={1d} r22={1d} r23={1d} r24={1d}
r25={1d} r26={1d} r27={1d} r28={1d} r37={1d} r38={1d} r39={1d}
r61={2d,2u}
 ;;    total ref usage 34{23d,11u,0e} in 4{4 regular + 0 call} insns.
 (note:HI 1 0 4 NOTE_INSN_DELETED)

@@ -38,13 +47,12 @@ Dataflow summary:

 (note:HI 6 3 7 2 NOTE_INSN_DELETED)

-(insn:HI 7 6 8 2 ../include/mmintrin.h:300 (set (reg:V2SI 63 [ x ])
-        (mem/c/i:V2SI (symbol_ref:DI ("x") <var_decl 0x7ffff31afbe0
x>) [2 x+0 S8 A64])) 933 {*movv2si_internal_rex64} (nil))
+(insn:HI 7 6 8 2 ../include/mmintrin.h:300 (set (reg:V2SI 61)
+        (mem/c/i:V2SI (symbol_ref:DI ("x") <var_decl 0x7ffd138e1be0
x>) [2 x+0 S8 A64])) 933 {*movv2si_internal_rex64} (nil))

 (insn:HI 8 7 14 2 ../include/mmintrin.h:300 (set (reg:V2SI 61)
-        (plus:V2SI (reg:V2SI 63 [ x ])
-            (mem/c/i:V2SI (symbol_ref:DI ("y") <var_decl
0x7ffff31afc80 y>) [2 y+0 S8 A64]))) 979 {*mmx_addv2si3}
(expr_list:REG_DEAD (reg:V2SI 63 [ x ])
-        (nil)))
+        (plus:V2SI (reg:V2SI 61)
+            (mem/c/i:V2SI (symbol_ref:DI ("y") <var_decl
0x7ffd138e1c80 y>) [2 y+0 S8 A64]))) 979 {*mmx_addv2si3} (nil))

 (insn:HI 14 8 20 2
/export/gnu/import/svn/gcc-test/src-trunk/gcc/testsuite/gcc.target/i386/pr34256.c:12
(set (reg/i:DI 0 ax)
         (subreg:DI (reg:V2SI 61) 0)) 89 {*movdi_1_rex64}
(expr_list:REG_DEAD (reg:V2SI 61)


The regmov pass is definitely changed by revision 143757.


-- 
H.J.



More information about the Gcc-patches mailing list