This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: patch switching on LRA remat
- From: "H.J. Lu" <hjl dot tools at gmail dot com>
- To: Vladimir Makarov <vmakarov at redhat dot com>
- Cc: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Sat, 15 Nov 2014 11:04:55 -0800
- Subject: Re: patch switching on LRA remat
- Authentication-results: sourceware.org; auth=none
- References: <546660EE dot 5080809 at redhat dot com> <CAMe9rOq_X2g94Zc-iMdx7vExqgNU9VeHzW6d==Hjg4YSy+Boxw at mail dot gmail dot com> <54678860 dot 7050807 at redhat dot com>
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
--
H.J.