Clang computes the linkage and visibility of both parameter lists and
arguments lists of templates. As far as I can tell, the parameter list
computation is currently dead code. It would only have an effect in
cases where the arguments are less restrictive than the parameters.
For visibility, this would be something like

struct HIDDEN foo {
};
DEFAULT foo x;
template<foo *z>
void DEFAULT zed() {
}
template void zed<&x>();

But in case like this we currently pick the first explicit visibility
we find (the one in x). I am not sure if it possible to write an
equivalent case for linkage.

There are two patches attached. The first one changes the merging so
that the parameter list linkage and visibility computation is no
longer dead. The second one simply deletes it. For what it is worth,
gcc 4.7 agrees with the second patch.

Cheers,
Rafael

Attachment: params1.patch
Description: Binary data

Attachment: params2.patch
Description: Binary data

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

Reply via email to