DenseMap<long, SOMETHING> used LONG_MAX as a tombstone, so it asserts
when you try to insert it!
rdar://
44774672
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@343042
91177308-0d34-0410-b5e6-
96231b3b80d8
typedef SmallVector<std::unique_ptr<ECDVector>, 3> DuplicatesVector;
typedef llvm::PointerUnion<EnumConstantDecl*, ECDVector*> DeclOrVector;
- typedef llvm::DenseMap<int64_t, DeclOrVector> ValueToVectorMap;
+ typedef std::unordered_map<int64_t, DeclOrVector> ValueToVectorMap;
// Use int64_t as a key to avoid needing special handling for DenseMap keys.
auto EnumConstantToKey = [](const EnumConstantDecl *D) {
// RUN: %clang_cc1 %s -fsyntax-only -verify -Wduplicate-enum
-// RUN: %clang_cc1 %s -x c++ -fsyntax-only -verify -Wduplicate-enum
+// RUN: %clang_cc1 %s -x c++ -DCPP -fsyntax-only -verify -Wduplicate-enum
enum A {
A1 = 0, // expected-note {{element 'A1' also has value 0}}
A2 = -1,
enum enum2 {
VALUE // expected-error{{redefinition of enumerator 'VALUE'}}
};
+
+// rdar://44774672
+#ifdef CPP
+enum BigEnumerators : long {
+ e1,
+ e2 = 9223372036854775807L,
+};
+#endif