[PATCH] introduce attribute exalias

Alexandre Oliva oliva@adacore.com
Fri Aug 14 19:24:50 GMT 2020

On Aug 14, 2020, Nathan Sidwell <nathan@acm.org> wrote:

> This seems a useful feature.  I don;t think it needs language
> lawyering -- it's an extension, right?

Well, yeah, but I think it's usually good for even extensions to be
sound language-wise.

> By 'same-linkage', do you mean same linkage as the *symbol* of the
> thing it is aliasing, or same linkage as the language entity it is
> aliasing?
> I suspect you mean the former.

Yeah, ultimately the symbol declared as exalias gets the same
object-level linkage and visibility properties as those of the primary
symbol emitted for the language entity.  Conceptually, the entity
introduced by the attribute is not even visible or accessible in the
standard language; it can only be referenced by alias attributes and by
Ada import declarations, but conceptually, in as much as you conceive of
it as a separate entity, I suppose it makes some sense to say it gets
the same linkage as the entity it refers to.

> I'm sure we can bikeshed the name 'exalias' doesn't seem very mnemonic
> to me.  'symbol_alias' or something?

I don't like symbol_alias; that this feature names a symbol is not a
distinguishing feature from the preexisting alias attribute.

'ex' can be read as both extra, exported, external, and all of these
sort of make sense, at least for entities that have linkage.

Even for exclusively internal uses, say to introduce a mnemonic symbol
for another alias-attributed declaration to refer to, the "ex" prefix,
that means the opposite of "in", fitting in well with the functionality
of "ex"posing the symbol through a name that other alias declarations
can take *in*, *im*port.

Another possible spelling for this proposed attribute that might be more
mnemonic is "aka"; unfortunately, that's pretty much a synonym to alias,
so it might be mistaken as such, rather than as a complementary feature,
akin to the other end of a power extension cable: whereas alias does the
job of a plug, *ex*alias provides a socket/*out*let.

Alexandre Oliva, happy hacker
Free Software Activist
GNU Toolchain Engineer

More information about the Gcc-patches mailing list