OSDN Git Service

Fix -Werror when compiling rL318083 (ter)
authorSerge Guelton <sguelton@quarkslab.com>
Mon, 13 Nov 2017 21:55:01 +0000 (21:55 +0000)
committerSerge Guelton <sguelton@quarkslab.com>
Mon, 13 Nov 2017 21:55:01 +0000 (21:55 +0000)
Statically assert the result and remove a runtime comparison, a direct consequence of the optimization introduced in rL318083.

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

lib/IR/Value.cpp

index 5df0c6d..bfd3911 100644 (file)
@@ -50,6 +50,7 @@ Value::Value(Type *ty, unsigned scid)
     : VTy(checkType(ty)), UseList(nullptr), SubclassID(scid),
       HasValueHandle(0), SubclassOptionalData(0), SubclassData(0),
       NumUserOperands(0), IsUsedByMD(false), HasName(false) {
+  static_assert(ConstantFirstVal == 0, "!(SubclassID < ConstantFirstVal)");
   // FIXME: Why isn't this in the subclass gunk??
   // Note, we cannot call isa<CallInst> before the CallInst has been
   // constructed.
@@ -57,7 +58,7 @@ Value::Value(Type *ty, unsigned scid)
     assert((VTy->isFirstClassType() || VTy->isVoidTy() || VTy->isStructTy()) &&
            "invalid CallInst type!");
   else if (SubclassID != BasicBlockVal &&
-           (SubclassID < ConstantFirstVal || SubclassID > ConstantLastVal))
+           (/*SubclassID < ConstantFirstVal ||*/ SubclassID > ConstantLastVal))
     assert((VTy->isFirstClassType() || VTy->isVoidTy()) &&
            "Cannot create non-first-class values except for constants!");
   static_assert(sizeof(Value) == 2 * sizeof(void *) + 2 * sizeof(unsigned),