[patch][pr22217] Use the most recent decl for mangling
rjmccall at apple.com
Fri Jan 23 00:25:49 PST 2015
> On Jan 22, 2015, at 4:52 PM, Rafael Espíndola <rafael.espindola at gmail.com> wrote:
> Sent the email a bit early.
>>> That is not what I am seeing with gcc. Given
>>> int pr22217_foo;
>>> int *b = &pr22217_foo;
>>> extern int pr22217_foo __attribute__((section("zed")));
This should be an error in both C and C++. I see absolutely no reason to allow a declaration following a definition (even a tentative definition) to add a section attribute. We should not be afraid to reject stupidly-written code when it abuses language extensions, even when they’re not “our” extensions.
There are fair arguments against our current emit-as-you-go IRGen model, but allowing us to more perfectly emulate GCC’s bugs is not one of them. Nor is there a need to exactly copy GCC’s visibility model in every conceivable case. One very nice incidental advantage of emit-as-you-go is that it encourages us to ensure that language decisions are made locally by the declarations involved, which — beyond simply being better language design in and of itself — also means that they’re not susceptible to random breakage by differences in module import.
More information about the cfe-commits