[PATCH] Objective-C: fix protocol list count type (pertinent to non-LP64)
Matt Jacobson
mhjacobson@me.com
Sun Nov 7 22:50:57 GMT 2021
> On Oct 25, 2021, at 5:43 AM, Iain Sandoe <iain@sandoe.co.uk> wrote:
>
> Did you test objective-c++ on Darwin?
>
> I see a lot of fails of the form:
> Excess errors:
> <built-in>: error: initialization of a flexible array member [-Wpedantic]
Looked into this. It’s happening because obj-c++.dg/dg.exp has:
set DEFAULT_OBJCXXFLAGS " -ansi -pedantic-errors -Wno-long-long"
Specifically, the `-pedantic-errors` argument prohibits initialization of a
flexible array member. Notably, this flag does *not* appear in objc/dg.exp.
Admittedly I didn’t know that initialization of a FAM was prohibited by the
standard. It’s allowed by GCC, though, as documented here:
<https://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html>
Is it OK to use a GCC extension this way in the Objective-C frontend?
> For a patch that changes code-gen we should have a test that it produces what’s
> expected (in general, a ‘torture' test would be preferrable so that we can be sure the
> output is as expected for different optimisation levels).
The output is different only for targets where
sizeof (long) != sizeof (void *). Do we have the ability to run “cross”
torture tests? Could such a test verify the emitted assembly (like LLVM’s
FileCheck tests do)? Or would it need to execute something?
Thanks for your help!
Matt
More information about the Gcc-patches
mailing list