This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] PR 62173, re-shuffle insns for RTL loop invariant hoisting
- From: Jiong Wang <wong dot kwongyuan dot tools at gmail dot com>
- To: Jeff Law <law at redhat dot com>
- Cc: Steven Bosscher <stevenb dot gcc at gmail dot com>, "gcc-patches at gcc dot gnu dot org" <gcc-patches at gcc dot gnu dot org>, Kenneth Zadeck <zadeck at naturalbridge dot com>, Richard Biener <richard dot guenther at gmail dot com>, "Bin.Cheng" <amker dot cheng at gmail dot com>, Segher Boessenkool <segher at kernel dot crashing dot org>
- Date: Tue, 14 Apr 2015 22:49:10 +0100
- Subject: Re: [PATCH] PR 62173, re-shuffle insns for RTL loop invariant hoisting
- Authentication-results: sourceware.org; auth=none
- References: <54803EBE dot 2060607 at arm dot com> <CAFiYyc1jauY_hejCfgU88DXtaSCCSZDUMiKMb678KqQ_QrMzrQ at mail dot gmail dot com> <CAFiYyc0gEQt_Ci1TyCfYys=JnZMr8FmYW7dFtq+mBmqKjeuttw at mail dot gmail dot com> <5480B6D6 dot 2020201 at arm dot com> <548EFE0D dot 1070808 at arm dot com> <548EFE55 dot 6090901 at arm dot com> <CAFiYyc3oYRsYkQwivE+T4A4mysDBe0gjZqjroQ8B2p1J6sakQg at mail dot gmail dot com> <54930811 dot 1020003 at arm dot com> <20141218220908 dot GA20720 at gate dot crashing dot org> <CAHFci28ajc8KqKEvyYYvQHbhYkZ-ExV8ixJ+SNuqV8bg3n7JJQ at mail dot gmail dot com> <CAAfDdZ0EZ6EVN_wYFFuh81ptL2c_Em-Ub-2s4GO7Vp0QKjd-=Q at mail dot gmail dot com> <CAFiYyc32CJJTjakxMLjkCQAJLrv1u0PSjifTs=A4V4q4nOFTKg at mail dot gmail dot com> <5494426A dot 9010209 at naturalbridge dot com> <CAAfDdZ2xrfRYoD8eO1L+8StWh53OhFNBy4ZMRt-K4xSj6r64eA at mail dot gmail dot com> <54DB6587 dot 1020207 at naturalbridge dot com> <54DB9CDB dot 5090304 at arm dot com> <CAAfDdZ29jHnFFGCpi8Adgf4hXk80QQH-vCrV=m0wdZNkT0x84A at mail dot gmail dot com> <CABu31nPMZ5ZCx+frisV+AT9pmC+DumN+Sjt=UscZ48kze4_3YQ at mail dot gmail dot com> <552D4D61 dot 9040100 at redhat dot com>
2015-04-14 18:24 GMT+01:00 Jeff Law <law@redhat.com>:
> On 04/14/2015 10:48 AM, Steven Bosscher wrote:
>>>
>>> So I think this stage2/3 binary difference is acceptable?
>>
>>
>> No, they should be identical. If there's a difference, then there's a
>> bug - which, it seems, you've already found, too.
>
> RIght. And so the natural question is how to fix.
>
> At first glance it would seem like having this new code ignore dependencies
> rising from debug insns would work.
>
> Which then begs the question, what happens to the debug insn -- it's
> certainly not going to be correct anymore if the transformation is made.
Exactly.
The debug_insn 2776 in my example is to record the base address of a
local array. the new code is doing correctly here by not shuffling the
operands of insn 2556 and 2557 as there is additional reference of
reg:1473 from debug insn, although the code will still execute correctly
if we do the transformation.
my understanding to fix this:
* delete the out-of-date mismatch debug_insn? as there is no guarantee
to generate accurate debug info under -O2.
IMO, this debug_insn may affect "DW_AT_location" field for variable
descrption of "classes" in .debug_info section, but it's omitted in
the final output already.
<3><38a4d>: Abbrev Number: 137 (DW_TAG_variable)
<38a4f> DW_AT_name : (indirect string, offset: 0x18db): classes
<38a53> DW_AT_decl_file : 1
<38a54> DW_AT_decl_line : 548
<38a56> DW_AT_type : <0x38cb4>
* update the debug_insn? if the following change is OK with dwarf standard
from
insn0: reg0 = fp + reg1
debug_insn: var_loc = reg0 + const_off
insn1: reg2 = reg0 + const_off
to
insn0: reg0 = fp + const_off
debug_insn: var_loc = reg0 + reg1
insn1: reg2 = reg0 + reg1
Thanks,
Regards,
Jiong
>
> jeff
>