ParmVarDecls have no linkage. Previously we would report that parameters

in type signatures have external linkage.

Fixes rdar://10058317.

llvm-svn: 145551
This commit is contained in:
Argyrios Kyrtzidis 2011-12-01 01:28:21 +00:00
parent 253eefe0df
commit 79d0428046
2 changed files with 8 additions and 2 deletions

View File

@ -721,6 +721,8 @@ static LinkageInfo getLVForDecl(const NamedDecl *D, LVFlags Flags) {
switch (D->getKind()) {
default:
break;
case Decl::ParmVar:
return LinkageInfo::none();
case Decl::TemplateTemplateParm: // count these as external
case Decl::NonTypeTemplateParm:
case Decl::ObjCAtDefsField:

View File

@ -11,6 +11,8 @@ void bar(int y) {
extern int n;
static int wibble(int);
void ena(int (*dio)(int tria));
// CHECK: EnumDecl=Baz:3:6 (Definition)linkage=External
// CHECK: EnumConstantDecl=Qux:3:12 (Definition)linkage=External
// CHECK: VarDecl=x:4:5linkage=External
@ -22,5 +24,7 @@ static int wibble(int);
// CHECK: VarDecl=k:9:7 (Definition)linkage=NoLinkage
// CHECK: VarDecl=n:11:12linkage=External
// CHECK: FunctionDecl=wibble:12:12linkage=Internal
// CHECL: ParmDecl=:12:22 (Definition)linkage=NoLinkage
// CHECK: ParmDecl=:12:22 (Definition)linkage=NoLinkage
// CHECK: FunctionDecl=ena:14:6linkage=External
// CHECK: ParmDecl=dio:14:16 (Definition)linkage=NoLinkage
// CHECK: ParmDecl=tria:14:25 (Definition)linkage=NoLinkage