summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2003-03-03 23:28:55 +0000
committerChris Lattner <sabre@nondot.org>2003-03-03 23:28:55 +0000
commit8ce4e7949b102d5356af34af252b05eeb81d54be (patch)
tree2b7c7774140ee226acbccc870981858cae022828 /llvm/lib
parentc048bb3addb47b8a9b01eb756ce5060db3ee6585 (diff)
downloadbcm5719-llvm-8ce4e7949b102d5356af34af252b05eeb81d54be.tar.gz
bcm5719-llvm-8ce4e7949b102d5356af34af252b05eeb81d54be.zip
Fix bug: Assembler/2003-03-03-DuplicateConstant.ll
llvm-svn: 5692
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/AsmParser/llvmAsmParser.y10
1 files changed, 6 insertions, 4 deletions
diff --git a/llvm/lib/AsmParser/llvmAsmParser.y b/llvm/lib/AsmParser/llvmAsmParser.y
index fd86d50ead8..f2135a7ad25 100644
--- a/llvm/lib/AsmParser/llvmAsmParser.y
+++ b/llvm/lib/AsmParser/llvmAsmParser.y
@@ -501,10 +501,12 @@ static bool setValueName(Value *V, char *NameStr) {
// Otherwise, we are a simple redefinition of a value, check to see if it
// is defined the same as the old one...
- if (const Type *Ty = dyn_cast<const Type>(Existing)) {
- if (Ty == cast<const Type>(V)) return true; // Yes, it's equal.
+ if (const Type *Ty = dyn_cast<Type>(Existing)) {
+ if (Ty == cast<Type>(V)) return true; // Yes, it's equal.
// std::cerr << "Type: " << Ty->getDescription() << " != "
// << cast<const Type>(V)->getDescription() << "!\n";
+ } else if (const Constant *C = dyn_cast<Constant>(Existing)) {
+ if (C == V) return true; // Constants are equal to themselves
} else if (GlobalVariable *EGV = dyn_cast<GlobalVariable>(Existing)) {
// We are allowed to redefine a global variable in two circumstances:
// 1. If at least one of the globals is uninitialized or
@@ -1097,8 +1099,8 @@ FunctionList : FunctionList Function {
// ConstPool - Constants with optional names assigned to them.
ConstPool : ConstPool OptAssign CONST ConstVal {
- if (setValueName($4, $2)) { assert(0 && "No redefinitions allowed!"); }
- InsertValue($4);
+ if (!setValueName($4, $2))
+ InsertValue($4);
}
| ConstPool OptAssign TYPE TypesV { // Types can be defined in the const pool
// Eagerly resolve types. This is not an optimization, this is a
OpenPOWER on IntegriCloud