[cfe-commits] r123192 - in /cfe/trunk: lib/CodeGen/CodeGenModule.cpp test/CodeGen/blocksignature.c test/CodeGen/const-init.c test/CodeGen/darwin-string-literals.c test/CodeGen/func-in-block.c test/CodeGen/predefined-expr.c test/CodeGen/string-literal-short-wstring.c test/CodeGen/string-literal.c test/CodeGenCXX/predefined-expr.cpp test/CodeGenObjC/predefined-expr.m
John McCall
rjmccall at apple.com
Fri Jan 14 12:41:01 PST 2011
On Jan 14, 2011, at 12:03 PM, Rafael Ávila de Espíndola wrote:
>>> BTW, should we allow unnamed_addr in function declarations?
>>
>> It seems that unnamed_addr should be allowed on function definitions. If we allow it on function declarations we should allow it on external globals as well. Is there a use case for it? It seems reasonable to allow it on declarations...
>
> So, I went the other way and disallowed it for both function and
> variable declarations.
>
> The high level argument is that the address not being significant is not
> a useful knowledge when all you have is a declaration. There is nothing
> you can do to influence the address for example. This is unlike knowing
> that a declaration is constant for example, since you can use the
> constantness in optimizations.
>
> Allowing them on declaration also means that we have to worry about
> merging them during linking. What combinations should be valid?
Are you not already merging them during linking? What happens when I have
two weak/linkonce definitions? More generally, is this attribute a guarantee
that nobody *ever* cares about address significance, or just that the current
module doesn't?
Also, I wish this had been discussed on the ML even slightly before being
committed.
John.
More information about the cfe-commits
mailing list