The attached patch causes clang to reject alias attributes that point
to undefined names. For example, with this patch we now reject

void f1(void) __attribute__((alias("g1")));

if g1 is not defined in this file. This matches "modern" gcc (>= 4.2
at least) behavior. What is different in this implementation is that
we use the C/C++ level names, not the assembly names like gcc does.
This is consistent with our implementation of #pragma weak, with has
the same difference to gcc's implementation.

Other options include
* Using the mangled name from sema. This would be very expensive and
we would have to mangle each decl to see if we got it.
* Produce a terse error from CodeGen. We normally avoid this, but it
is probably the right thing to do here if we decide to use the mangled
names.

Cheers,
Rafael

Attachment: t.patch
Description: Binary data

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to