eugenis added inline comments.

================
Comment at: lib/AST/Decl.cpp:635-641
@@ -634,2 +634,9 @@
   assert(!isa<FieldDecl>(D) && "Didn't expect a FieldDecl!");
 
+  for (const DeclContext *DC = D->getDeclContext();
+       !isa<TranslationUnitDecl>(DC); DC = DC->getParent()) {
+    const NamespaceDecl *ND = dyn_cast<NamespaceDecl>(DC);
+    if (ND && ND->getAttr<InternalLinkageAttr>())
+      return LinkageInfo::internal();
+  }
+
----------------
rsmith wrote:
> Dead code?
Right. Removed.

================
Comment at: lib/AST/Decl.cpp:1362-1367
@@ -1346,4 +1361,8 @@
     }
-    assert(!Old || Old->getCachedLinkage() == D->getCachedLinkage());
+    // Linkages may also differ if one of the declarations has
+    // InternalLinkageAttr.
+    assert(!Old || Old->getCachedLinkage() == D->getCachedLinkage() ||
+           (Old->hasAttr<InternalLinkageAttr>() !=
+            D->hasAttr<InternalLinkageAttr>()));
 #endif
 
----------------
rsmith wrote:
> We should not introduce another case where the linkage of an entity can 
> change after its first declaration. It seems reasonable to require this 
> attribute to be on the first declaration of the function.
This is strange, I can no longer trigger this code path.
I wonder if the change that added an attribute check to isExternallyVisible 
made this special case unnecessary?
Reverting this chunk.


Repository:
  rL LLVM

http://reviews.llvm.org/D13925



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to