Hi!

On Fri, 29 Mar 2019 at 20:02, Jeff Law <l...@redhat.com> wrote:
>
> On 3/29/19 9:09 AM, Jason Merrill wrote:
> > On Fri, Mar 29, 2019 at 4:48 AM Richard Biener <rguent...@suse.de> wrote:
> >>
> >> On Thu, 28 Mar 2019, Jason Merrill wrote:
> >>
> >>> On 3/26/19 4:40 AM, Richard Biener wrote:
> >>>> On Mon, 18 Mar 2019, Richard Biener wrote:
> >>>>
> >>>>> On Fri, 15 Mar 2019, Jason Merrill wrote:
> >>>>>
> >>>>>> On 3/15/19 9:33 AM, Richard Biener wrote:
> >>>>>>>
> >>>>>>> The following is an attempt to fix PR71598 where C (and C++?) have
> >>>>>>> an implementation-defined compatible integer type for each enum
> >>>>>>> and the TBAA rules mandate that accesses using a compatible type
> >>>>>>> are allowed.
> >>>>>>
> >>>>>> This does not apply to C++; an enum does not alias its underlying type.
> >>>>>
> >>>>> Thus the following different patch, introducing c_get_alias_set and
> >>>>> only doing the special handling for C family frontends (I assume
> >>>>> that at least ObjC is also affected).
> >>>>>
> >>>>> Bootstrap & regtest running on x86_64-unknown-linux-gnu, OK?
> >>>>
> >>>> Ping.  Also consider the additional testcase below to be added.
> >>>>
> >>>> Richard.
> >>>>
> >>>> 2019-03-18  Richard Biener  <rguent...@suse.de>
> >>>>
> >>>>          PR c/71598
> >>>>          * gimple.c: Include langhooks.h.
> >>>>          (gimple_get_alias_set): Treat enumeral types as the underlying
> >>>>          integer type.
> >>>
> >>> Won't this affect all languages?
> >>
> >> It affects all languages during the LTO optimization phase, yes.
> >> There's unfortunately no way around that at the moment.
> >
> > Ah, well.  Looks good to me, then.
> Likewise.  And with Joseph largely offline right now, that's going to
> have to be sufficient :-)
>


I've noticed minor new errors at link time on arm with the 2 new testcases.
pr71598-1.c complains on arm-none-eabi because
arm-none-eabi/bin/ld: warning: /ccu5w26t.o uses 32-bit enums yet the
output is to use variable-size enums; use of enum values across
objects may fail

conversely, pr71598-2.c complains on arm-none-linux-gnueabi* because:
arm-none-linux-gnueabi/bin/ld: warning: /ccl5OUKi.o uses variable-size
enums yet the output is to use 32-bit enums; use of enum values across
objects may fail

In both cases this is because crt0.o is built with the opposite
(default) short-enum option than the testcase, so the linker sees a
mismatch between crt0.o and pr71598-X.o.

Shall I add target-dependent dg-warning directives in the testcases,
or is there a better way?

Thanks,

Christophe



> jeff

Reply via email to