]> granicus.if.org Git - clang/commitdiff
[analyzer] Remove incorrect workaround for unimplemented temporary destructors.
authorJordan Rose <jordan_rose@apple.com>
Tue, 1 Apr 2014 16:39:59 +0000 (16:39 +0000)
committerJordan Rose <jordan_rose@apple.com>
Tue, 1 Apr 2014 16:39:59 +0000 (16:39 +0000)
If we're trying to get the zero element region of something that's not a region,
we should be returning UnknownVal, which is what ProgramState::getLValue will
do for us.

Patch by Alex McCarthy!

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

lib/StaticAnalyzer/Core/ExprEngineCXX.cpp
test/Analysis/dtor-cxx11.cpp

index fbbc73cc73bfc89a164c76eb4e16827342f84b32..5dd16944e780a59bd13b9eaec7eb8271c3fdb8d4 100644 (file)
@@ -91,12 +91,6 @@ void ExprEngine::performTrivialCopy(NodeBuilder &Bldr, ExplodedNode *Pred,
 /// If the type is not an array type at all, the original value is returned.
 static SVal makeZeroElementRegion(ProgramStateRef State, SVal LValue,
                                   QualType &Ty) {
-  // FIXME: This check is just a temporary workaround, because
-  // ProcessTemporaryDtor sends us NULL regions. It will not be necessary once
-  // we can properly process temporary destructors.
-  if (!LValue.getAsRegion())
-    return LValue;
-
   SValBuilder &SVB = State->getStateManager().getSValBuilder();
   ASTContext &Ctx = SVB.getContext();
 
index 5c9024b8edf7d50d7c8af76217536c5b7b29d95b..7d2e87e44e4b33f80e822140bf3c31c8d9e403f9 100644 (file)
@@ -8,8 +8,8 @@ namespace Cxx11BraceInit {
     ~Foo() {}
   };
 
-  /* FIXME: Don't crash here.
   void testInitializerList() {
     for (Foo foo : {Foo(), Foo()}) {}
-  } */
+  }
 }
+