Re: [patch] Fix unused static symbols so they're not dropped by clang

Andrew Pinski
2014-04-12T04:00:25Z

On Fri, Apr 11, 2014 at 1:17 PM, David Blaikie <dblaikie@gmail.com> wrote:
> On Fri, Apr 11, 2014 at 11:23 AM, Doug Evans <dje@google.com> wrote:
>> On Thu, Apr 10, 2014 at 11:51 PM, David Blaikie <dblaikie@gmail.com> wrote:
>>> Several tests used file-static functions and variables that were not
>>> referenced by the code. Even at -O0, clang omits these entities at the
>>> frontend so the tests fail.
>>>
>>> Since it doesn't look like these tests needed this functionality for
>>> what they were testing, I've modified the variables/functions to
>>> either be non-static, or marked them with __attribute__((used)).
>>>
>>> If it's preferred that I use the attribute more pervasively, rather
>>> than just making the entities non-static, I can provide a patch for
>>> that (or some other preferred solution). There's certainly precedent
>>> for both (non-static entities and __attribute__((used)) in the
>>> testsuite already and much more of the former than the latter).
>>>
>>> I have commit-after-review access, so just looking for sign-off here.
>>
>> Yikes.
>>
>> This is becoming more and more painful (not your fault of course!).
>> I can imagine this being a never ending source of regressions.
>>
>> Does clang perchance have a -O0-and-yes-I-really-mean-O0 option?
>
> Sort of. It does have -femit-all-decls, which, though poorly named,
> causes clang to produce definitions for unused static entities and
> even unused inline functions (which GCC doesn't do).

By default GCC does not keep unused inline functions but there is an
option for that -fkeep-inline-functions.

Thanks,
Andrew Pinski

> I'm not sure
> where we'd build in passing that flag from the GCC test suite. I'd
> rather not have "clang passes the test suite only if you pass this
> carefully chosen set of flags".