IsUnsigned(N->isUnsigned()) {}
bool isKeyOf(const DIEnumerator *RHS) const {
- return APInt::isSameValue(Value, RHS->getValue()) &&
- IsUnsigned == RHS->isUnsigned() && Name == RHS->getRawName();
+ return Value.getBitWidth() == RHS->getValue().getBitWidth() &&
+ Value == RHS->getValue() && IsUnsigned == RHS->isUnsigned() &&
+ Name == RHS->getRawName();
}
unsigned getHashValue() const { return hash_combine(Value, Name); }
//===----------------------------------------------------------------------===//
#include "llvm/IR/DebugInfo.h"
-#include "llvm/IR/DIBuilder.h"
+#include "llvm/ADT/APSInt.h"
#include "llvm/AsmParser/Parser.h"
+#include "llvm/IR/DIBuilder.h"
#include "llvm/IR/DebugInfoMetadata.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/LLVMContext.h"
EXPECT_TRUE(isa_and_nonnull<DIDerivedType>(SetType));
}
+TEST(DIBuilder, DIEnumerator) {
+ LLVMContext Ctx;
+ std::unique_ptr<Module> M(new Module("MyModule", Ctx));
+ DIBuilder DIB(*M);
+ APSInt I1(APInt(32, 1));
+ APSInt I2(APInt(33, 1));
+
+ auto *E = DIEnumerator::get(Ctx, I1, I1.isSigned(), "name");
+ EXPECT_TRUE(E);
+
+ auto *E1 = DIEnumerator::getIfExists(Ctx, I1, I1.isSigned(), "name");
+ EXPECT_TRUE(E1);
+
+ auto *E2 = DIEnumerator::getIfExists(Ctx, I2, I1.isSigned(), "name");
+ EXPECT_FALSE(E2);
+}
+
} // end namespace