[PATCH] avoid ice due to inconsistent argument types to fold_build (PR 90662)

Christophe Lyon christophe.lyon@linaro.org
Tue Jun 18 13:21:00 GMT 2019


On Tue, 18 Jun 2019 at 15:07, Martin Sebor <msebor@gmail.com> wrote:
>
> On 6/18/19 2:38 AM, Christophe Lyon wrote:
> > On Fri, 14 Jun 2019 at 03:35, Jeff Law <law@redhat.com> wrote:
> >>
> >> On 6/13/19 1:10 PM, Martin Sebor wrote:
> >>> Attached is a fix for the fold_build call with inconsistent
> >>> argument types introduced in a recent commit of mine.
> >>>
> >>> Tested on x86_64-linux.
> >>>
> >>> Martin
> >>>
> >>> gcc-90662.diff
> >>>
> >>> PR tree-optimization/90662 - strlen of a string in a vla plus offset not folded
> >>>
> >>> gcc/ChangeLog:
> >>>
> >>>        PR tree-optimization/90662
> >>>        * tree-ssa-strlen.c (get_stridx): Convert fold_build2 operands
> >>>        to the same type.
> >>>
> >>> gcc/testsuite/ChangeLog:
> >>>
> >>>        PR tree-optimization/90662
> >>>        * gcc.dg/pr90866-2.c: New test.
> >>>        * gcc.dg/pr90866.c: Ditto.
> >> OK
> >> jeff
> >
> > Hi,
> >
> > I've noticed that pr90866-2.c fails on arm-none-eabi:
> > /gcc/testsuite/gcc.dg/pr90866-2.c:17:5: error: conflicting types for 'i'
> > /gcc/testsuite/gcc.dg/pr90866-2.c:17:1: note: an argument type that
> > has a default promotion cannot match an empty parameter name list
> > declaration
> > /gcc/testsuite/gcc.dg/pr90866-2.c:16:5: note: previous declaration of
> > 'i' was here
> > compiler exited with status 1
> > FAIL: gcc.dg/pr90866-2.c (test for excess errors)
> >
> > Removing 'int i();' makes the test pass, but I'm wondering why is
> > passes on other targets without this change?
>
> I'm sure it's because of the difference in type promotion rules
> on the target.
OK, it's surprising it work on arm-linux* and not on arm-none-eabi?

> The function declaration shouldn't have an impact
> on the test case so I have removed it in r272418.
OK thanks

>
> Thanks
> Martin



More information about the Gcc-patches mailing list