]> granicus.if.org Git - clang/commitdiff
Minor fix in the injection of labels, since we want to look at the redeclaration...
authorDouglas Gregor <dgregor@apple.com>
Thu, 24 Mar 2011 14:35:16 +0000 (14:35 +0000)
committerDouglas Gregor <dgregor@apple.com>
Thu, 24 Mar 2011 14:35:16 +0000 (14:35 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128210 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaDecl.cpp
test/SemaCXX/goto.cpp

index a6c154338f4d75b334fa45dc73d221c26c5766ed..6f98461f44d99f0ed3ab9fdf789c22ddaf57cf86 100644 (file)
@@ -500,7 +500,7 @@ void Sema::PushOnScopeChains(NamedDecl *D, Scope *S, bool AddToContext) {
     // isn't strictly lexical, which breaks name lookup. Be careful to insert
     // the label at the appropriate place in the identifier chain.
     for (I = IdResolver.begin(D->getDeclName()); I != IEnd; ++I) {
-      DeclContext *IDC = (*I)->getLexicalDeclContext();
+      DeclContext *IDC = (*I)->getLexicalDeclContext()->getRedeclContext();
       if (IDC == CurContext) {
         if (!S->isDeclScope(*I))
           continue;
index b2b1e6f391f27ddffa55fc42bfc5ebeec2b1b74d..d8d5ec51f6e40f518cf69b1625f67c6b9d74d8d1 100644 (file)
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 -fsyntax-only -verify -fblocks %s
+// RUN: %clang_cc1 -fsyntax-only -verify -Wall -fblocks %s
 
 // PR9463
 double *end;
@@ -57,7 +57,7 @@ void h2(int end) {
   end:
     ::end = 0;
   }
- end:
+ end: // expected-warning{{unused label 'end'}}
   end = 1;
 }
 
@@ -92,4 +92,14 @@ namespace PR9495 {
   }
 }
 
+extern "C" {
+  void exit(int);
+}
 
+void f() {
+  {
+    goto exit;
+  }
+ exit:
+  return;
+}