]> granicus.if.org Git - clang/commitdiff
Use llvm::APSInt::isSameValue to compare for the same value.
authorEric Christopher <echristo@apple.com>
Sun, 15 Jul 2012 00:24:00 +0000 (00:24 +0000)
committerEric Christopher <echristo@apple.com>
Sun, 15 Jul 2012 00:24:00 +0000 (00:24 +0000)
Finishes rdar://11875995

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

lib/Sema/SemaDecl.cpp
test/SemaCXX/warn-unique-enum.cpp

index cbf2368f7123b0008ab795afd3375d9dafba7ba8..11d8931320a8fbf6a2486a6816c65662083c2489 100644 (file)
@@ -10435,7 +10435,7 @@ static void CheckForUniqueEnumValues(Sema &S, Decl **Elements,
       continue;
     }
 
-    if (FirstVal != ECD->getInitVal())
+    if (!llvm::APSInt::isSameValue(FirstVal, ECD->getInitVal()))
       return;
   }
 
index c9e40b001425b04446c44235219c014104969dbd..59a127807172722de4453d8dc82a54bc917b1135 100644 (file)
@@ -19,3 +19,9 @@ enum H { H1 = 4, H_MAX = H1, H_MIN = H1 };
 enum I { I1 = H1, I2 = 4 };
 enum J { J1 = 4, J2 = I2 };
 enum K { K1, K2, K3, K4 };
+
+// Don't crash or warn on this one.
+// rdar://11875995
+enum L {
+  L1 = 0x8000000000000000ULL, L2 = 0x0000000000000001ULL
+};