]> granicus.if.org Git - clang/commitdiff
libAnalysis: Add a case for TypeAliasDecl in CFGRecStmtDeclVisitor.
authorJordan Rose <jordan_rose@apple.com>
Sat, 16 Feb 2013 01:33:16 +0000 (01:33 +0000)
committerJordan Rose <jordan_rose@apple.com>
Sat, 16 Feb 2013 01:33:16 +0000 (01:33 +0000)
Neither of the current clients of CFGRecStmtDeclVisitor are doing
anything with typedefs, so I assume type aliases (C++11 "using")
can be safely ignored. This was causing assertion failures in
the analyzer.

<rdar://problem/13228440>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175335 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Analysis/Visitors/CFGRecStmtDeclVisitor.h
test/Analysis/dead-stores.cpp

index dd6de6e548d6a147721da8d7f0ac41f02f9cc56e..2bf3eda070b98d22386863fc6c5e3263c2ad7e67 100644 (file)
@@ -63,6 +63,7 @@ public:
         DISPATCH_CASE(ImplicitParam)
         DISPATCH_CASE(EnumConstant)
         DISPATCH_CASE(Typedef)
+        DISPATCH_CASE(TypeAlias)
         DISPATCH_CASE(Record)    // FIXME: Refine.  VisitStructDecl?
         DISPATCH_CASE(CXXRecord)
         DISPATCH_CASE(Enum)
@@ -82,6 +83,7 @@ public:
   DEFAULT_DISPATCH(ImplicitParam)
   DEFAULT_DISPATCH(EnumConstant)
   DEFAULT_DISPATCH(Typedef)
+  DEFAULT_DISPATCH(TypeAlias)
   DEFAULT_DISPATCH(Record)
   DEFAULT_DISPATCH(Enum)
   DEFAULT_DISPATCH(Field)
index 86d84f0fbfa460187f592745a688cf1524ef6bce..e1a034b1d021a21ec7ec674c965735886d512ae1 100644 (file)
@@ -1,5 +1,5 @@
-// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -analyze -analyzer-checker=deadcode.DeadStores -verify -Wno-unreachable-code %s
-// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -analyze -analyzer-store=region -analyzer-constraints=range -analyzer-checker=deadcode.DeadStores -verify -Wno-unreachable-code %s
+// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -std=c++11 -analyze -analyzer-checker=deadcode.DeadStores -verify -Wno-unreachable-code %s
+// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -std=c++11 -analyze -analyzer-store=region -analyzer-constraints=range -analyzer-checker=deadcode.DeadStores -verify -Wno-unreachable-code %s
 
 //===----------------------------------------------------------------------===//
 // Basic dead store checking (but in C++ mode).
@@ -149,3 +149,10 @@ void test_6b() {
   }
   catch (void *) {}
 }
+
+
+void testCXX11Using() {
+  using Int = int;
+  Int value;
+  value = 1; // expected-warning {{never read}}
+}