On Sun, May 7, 2017 at 8:06 AM, Jeff Law <l...@redhat.com> wrote:
> On 05/06/2017 05:56 PM, Andrew Pinski wrote:
>>
>> On Sat, May 6, 2017 at 4:55 PM, Andrew Pinski <pins...@gmail.com> wrote:
>>>
>>> On Sat, May 6, 2017 at 8:03 AM, Jeff Law <l...@redhat.com> wrote:
>>>>
>>>> This is the 2nd of 3-5 patches to address pr78496.
>>>>
>>>> Jump threading will examine ASSERT_EXPRs as it walks the IL and record
>>>> information from those ASSERT_EXPRs into the available expression and
>>>> const/copies tables where they're later used to simplify conditionals.
>>>>
>>>> We're missing a couple things though.
>>>>
>>>> First an ASSERT_EXPR with an EQ test creates an equality we can enter
>>>> into
>>>> the const/copy tables.  We were failing to do that.  This is most
>>>> interesting when the RHS of the condition in the ASSERT_EXPR is a
>>>> constant,
>>>> obviously.  This has a secondary benefit of doing less work to get
>>>> better
>>>> optimization.
>>>>
>>>> Second, some ASSERT_EXPRs may start off as a relational test such as x
>>>> <= 0,
>>>> but after range extraction and propagation they could be simplified into
>>>> an
>>>> equality comparison.  We already do this with conditionals and
>>>> generalizing
>>>> that code to handle ASSERT_EXPRs is pretty easy.  This gives us more
>>>> chances
>>>> to extract simple equivalences from the condition in ASSERT_EXPRs.
>>>>
>>>> This patch fixes those 2 problems.  I don't think it directly helps
>>>> pr78496
>>>> right now as we're unable to pick up the newly exposed jump threads
>>>> until
>>>> VRP2.   But that's a short term limitation that I've already addressed
>>>> locally :-)
>>>>
>>>> Bootstrapped, regression tested and installed on the trunk.
>>>
>>>
>>>
>>> After this patch on aarch64-linux-gnu I get a bootstrap failure while
>>> linking lto1/cc1/cc1plus/go1 in stage2:
>>> godump.o: In function `go_define(unsigned int, char const*)':
>>> godump.c:(.text+0x36c): relocation truncated to fit:
>>> R_AARCH64_ADR_PREL_LO21 against `.rodata'
>>> godump.c:(.text+0x4b4): relocation truncated to fit:
>>> R_AARCH64_ADR_PREL_LO21 against `.rodata'
>>> collect2: error: ld returned 1 exit status
>>> ../../gcc/gcc/lto/Make-lang.in:81: recipe for target 'lto1' failed
>>> make[3]: *** [lto1] Error 1
>>
>>
>> I should mention this is even after the patch to
>> simplify_assert_expr_using_ranges .
>
> Just spun up an aarch64 machine for testing and it's failing for me too.
> I'll revert the patch and dig in.

Looks like I misread my regression hunter output.  This patch was not
the cause.  I will write to the person who actually caused it.

Thanks,
Andrew


>
> jeff

Reply via email to