]> granicus.if.org Git - clang/commitdiff
Removed hack with toggling the signedness flag of the APSInt stored
authorTed Kremenek <kremenek@apple.com>
Tue, 26 Feb 2008 21:04:29 +0000 (21:04 +0000)
committerTed Kremenek <kremenek@apple.com>
Tue, 26 Feb 2008 21:04:29 +0000 (21:04 +0000)
in an EnumConstantDecl.  This was made possible because of a recent fix
in the parser:

http://llvm.org/viewvc/llvm-project?rev=47581&view=rev

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

Analysis/ValueState.cpp

index b892fd6852429e904e69c8dead23259de6009ed2..7be59ce5f5fa6100e0137249c57f3e9894353c48 100644 (file)
@@ -246,15 +246,8 @@ RVal ValueStateManager::GetRVal(ValueState St, Expr* E) {
           // already has persistent storage?  We do this because we
           // are comparing states using pointer equality.  Perhaps there is
           // a better way, since APInts are fairly lightweight.
-          llvm::APSInt X = ED->getInitVal();
-          
-          // FIXME: This is a hack.  The APSInt inside the EnumConstantDecl
-          //  might not match the signedness of the DeclRefExpr.  We hack
-          //  a workaround here.  Should be fixed elsewhere.
-          if (E->getType()->isUnsignedIntegerType() != X.isUnsigned())
-            X.setIsUnsigned(!X.isUnsigned());
-          
-          return nonlval::ConcreteInt(ValMgr.getValue(X));          
+
+          return nonlval::ConcreteInt(ValMgr.getValue(ED->getInitVal()));          
         }
         else if (FunctionDecl* FD = dyn_cast<FunctionDecl>(D))
           return lval::FuncVal(FD);