[cfe-commits] Linkage and visibility of parameter list

Douglas Gregor dgregor at apple.com
Tue Jun 5 16:39:35 PDT 2012


On May 28, 2012, at 9:00 PM, Rafael EspĂ­ndola <rafael.espindola at gmail.com> wrote:

> 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.

One can pass nullptr as an argument for a pointer non-type template parameter, in which case we need the parameter list's linkage/visibility.

> 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.

The first one seems correct to me. Perhaps John would like to weigh in?

	- Doug



More information about the cfe-commits mailing list