diff mbox

patch switching on LRA remat

Message ID 54678860.7050807@redhat.com
State New
Headers show

Commit Message

Vladimir Makarov Nov. 15, 2014, 5:07 p.m. UTC
On 2014-11-15 9:58 AM, H.J. Lu wrote:
> On Fri, Nov 14, 2014 at 12:07 PM, Vladimir Makarov <vmakarov@redhat.com> wrote:
>>   The LRA rematerialization patch I've submitted about day ago broke H.J.'s
>> 32-bit bootstrap.  So I switched off the rematerialization right away.  The
>> set for bootstrapping used by H.J. was very useful.  I've fixed several
>> existing and potential bugs.
>>
>> Here the patch fixing the bugs and switching on LRA remat back.  The patch
>> was bootstrapped on x86-64 and i686 (using H.J.'s options).
>>
>> Committed as rev. 217588.
>>
>> 2014-11-14  Vladimir Makarov  <vmakarov@redhat.com>
>>
>>          * lra-int.h (lra_create_live_ranges): Add parameter.
>>          * lra-lives.c (temp_bitmap): Move higher.
>>          (initiate_live_solver): Move temp_bitmap initialization into
>>          lra_live_ranges_init.
>>          (finish_live_solver): Move temp_bitmap clearing into
>>          live_ranges_finish.
>>          (process_bb_lives): Add parameter.  Use it to control live info
>>          update and dead insn elimination.  Pass it to mark_regno_live and
>>          mark_regno_dead.
>>          (lra_create_live_ranges): Add parameter.  Pass it to
>>          process_bb_lives.
>>          (lra_live_ranges_init, lra_live_ranges_finish): See changes in
>>          initiate_live_solver and finish_live_solver.
>>          * lra-remat.c (do_remat): Process insn non-operand hard regs too.
>>          Use temp_bitmap to update avail_cands.
>>          * lra.c (lra): Pass new parameter to lra_create_live_ranges.  Move
>>          check with lra_need_for_spill_p after live range pass.  Switch on
>>          rematerialization pass.
>
> Unfortunately, it failed to bootstrap ia32 GCC:
>
> https://gcc.gnu.org/ml/gcc-regression/2014-11/msg00392.html
>
> You can bootstrap ia32 GCC on Linux/x86-64:
>
> 1. Install ia32 binutils under /foo/bar.
> 2. Set PATH=/foo/bar:$PATH
> 3. Install 32-bit libraries used by GCC, glibc, mpfr, gmp, libmpc. ...
> 4. Configure GCC with
>

Thanks, H.J.  I see it's a different set of options as it was before.  I 
switched off remat. temporarily (rev. 217609).

Comments

H.J. Lu Nov. 15, 2014, 7:04 p.m. UTC | #1
On Sat, Nov 15, 2014 at 9:07 AM, Vladimir Makarov <vmakarov@redhat.com> wrote:
> On 2014-11-15 9:58 AM, H.J. Lu wrote:
>>
>> On Fri, Nov 14, 2014 at 12:07 PM, Vladimir Makarov <vmakarov@redhat.com>
>> wrote:
>>>
>>>   The LRA rematerialization patch I've submitted about day ago broke
>>> H.J.'s
>>> 32-bit bootstrap.  So I switched off the rematerialization right away.
>>> The
>>> set for bootstrapping used by H.J. was very useful.  I've fixed several
>>> existing and potential bugs.
>>>
>>> Here the patch fixing the bugs and switching on LRA remat back.  The
>>> patch
>>> was bootstrapped on x86-64 and i686 (using H.J.'s options).
>>>
>>> Committed as rev. 217588.
>>>
>>> 2014-11-14  Vladimir Makarov  <vmakarov@redhat.com>
>>>
>>>          * lra-int.h (lra_create_live_ranges): Add parameter.
>>>          * lra-lives.c (temp_bitmap): Move higher.
>>>          (initiate_live_solver): Move temp_bitmap initialization into
>>>          lra_live_ranges_init.
>>>          (finish_live_solver): Move temp_bitmap clearing into
>>>          live_ranges_finish.
>>>          (process_bb_lives): Add parameter.  Use it to control live info
>>>          update and dead insn elimination.  Pass it to mark_regno_live
>>> and
>>>          mark_regno_dead.
>>>          (lra_create_live_ranges): Add parameter.  Pass it to
>>>          process_bb_lives.
>>>          (lra_live_ranges_init, lra_live_ranges_finish): See changes in
>>>          initiate_live_solver and finish_live_solver.
>>>          * lra-remat.c (do_remat): Process insn non-operand hard regs
>>> too.
>>>          Use temp_bitmap to update avail_cands.
>>>          * lra.c (lra): Pass new parameter to lra_create_live_ranges.
>>> Move
>>>          check with lra_need_for_spill_p after live range pass.  Switch
>>> on
>>>          rematerialization pass.
>>
>>
>> Unfortunately, it failed to bootstrap ia32 GCC:
>>
>> https://gcc.gnu.org/ml/gcc-regression/2014-11/msg00392.html
>>
>> You can bootstrap ia32 GCC on Linux/x86-64:
>>
>> 1. Install ia32 binutils under /foo/bar.
>> 2. Set PATH=/foo/bar:$PATH
>> 3. Install 32-bit libraries used by GCC, glibc, mpfr, gmp, libmpc. ...
>> 4. Configure GCC with
>>
>
> Thanks, H.J.  I see it's a different set of options as it was before.  I
> switched off remat. temporarily (rev. 217609).

It also miscompiled SPEC CPU 2000 on both ia32 and x86-64:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63895
diff mbox

Patch

Index: ChangeLog
===================================================================
--- ChangeLog   (revision 217608)
+++ ChangeLog   (working copy)
@@ -1,3 +1,7 @@ 
+2014-11-15  Vladimir Makarov  <vmakarov@redhat.com>
+
+       * lra.c (lra): Switch off rematerialization pass.
+
  2014-11-15  Marc Glisse  <marc.glisse@inria.fr>

         * config/i386/xmmintrin.h (_mm_add_ps, _mm_sub_ps, _mm_mul_ps,
Index: lra.c
===================================================================
--- lra.c       (revision 217602)
+++ lra.c       (working copy)
@@ -2354,7 +2354,7 @@ 
         break;
        /* Now we know what pseudos should be spilled.  Try to
          rematerialize them first.  */
-      if (lra_remat ())
+      if (0&&lra_remat ())
         {
           /* We need full live info -- see the comment above.  */
           lra_create_live_ranges (lra_reg_spill_p, true);