[cfe-commits] r80403 - in /cfe/trunk: lib/Sema/SemaDecl.cpp test/SemaCXX/attr-after-definition.cpp
    Douglas Gregor 
    dgregor at apple.com
       
    Fri Aug 28 15:54:55 PDT 2009
    
    
  
Author: dgregor
Date: Fri Aug 28 17:54:55 2009
New Revision: 80403
URL: http://llvm.org/viewvc/llvm-project?rev=80403&view=rev
Log:
Make sure we actually found a redeclaration before complaining about attributes added to a redeclaration in C++
Added:
    cfe/trunk/test/SemaCXX/attr-after-definition.cpp
Modified:
    cfe/trunk/lib/Sema/SemaDecl.cpp
Modified: cfe/trunk/lib/Sema/SemaDecl.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDecl.cpp?rev=80403&r1=80402&r2=80403&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaDecl.cpp (original)
+++ cfe/trunk/lib/Sema/SemaDecl.cpp Fri Aug 28 17:54:55 2009
@@ -2736,7 +2736,7 @@
   ProcessDeclAttributes(S, NewFD, D);
 
   // attributes declared post-definition are currently ignored
-  if (PrevDecl) {
+  if (Redeclaration && PrevDecl) {
     const FunctionDecl *Def, *PrevFD = dyn_cast<FunctionDecl>(PrevDecl);
     if (PrevFD && PrevFD->getBody(Def) && D.hasAttributes()) {
       Diag(NewFD->getLocation(), diag::warn_attribute_precede_definition);
Added: cfe/trunk/test/SemaCXX/attr-after-definition.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/attr-after-definition.cpp?rev=80403&view=auto
==============================================================================
--- cfe/trunk/test/SemaCXX/attr-after-definition.cpp (added)
+++ cfe/trunk/test/SemaCXX/attr-after-definition.cpp Fri Aug 28 17:54:55 2009
@@ -0,0 +1,9 @@
+// RUN: clang-cc -fsyntax-only -verify %s
+struct X { };
+struct Y { };
+
+bool f0(X) { return true; } // expected-note{{definition}}
+bool f1(X) { return true; }
+
+__attribute__ ((__visibility__("hidden"))) bool f0(X); // expected-warning{{attribute}}
+__attribute__ ((__visibility__("hidden"))) bool f1(Y);
    
    
More information about the cfe-commits
mailing list