aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2002-08-14 18:24:09 +0000
committerChris Lattner <sabre@nondot.org>2002-08-14 18:24:09 +0000
commitad333484ea5ae976b83e35ccd3f6cfa6e71290e2 (patch)
tree31537909533fda5bb35bec362a4a0b26b56a3683
parent9b2b80fd48b10396be85a71735ffda0c155e5f72 (diff)
Remove support for Not ConstantExpr. This simplifies the unary case to only
have to support the cast instruction, so the function is renamed to getCast. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3328 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/llvm/Constants.h4
-rw-r--r--lib/AsmParser/llvmAsmParser.y2
-rw-r--r--lib/Bytecode/Reader/ConstantReader.cpp3
-rw-r--r--lib/Bytecode/Reader/InstructionReader.cpp9
-rw-r--r--lib/Linker/LinkModules.cpp6
-rw-r--r--lib/Transforms/Utils/Linker.cpp6
-rw-r--r--lib/VMCore/Constants.cpp16
-rw-r--r--lib/VMCore/Linker.cpp6
8 files changed, 19 insertions, 33 deletions
diff --git a/include/llvm/Constants.h b/include/llvm/Constants.h
index 29dcf5a3c9..aec7425b0b 100644
--- a/include/llvm/Constants.h
+++ b/include/llvm/Constants.h
@@ -431,8 +431,8 @@ protected:
public:
// Static methods to construct a ConstantExpr of different kinds.
- // Unary constant expr - Use with unary operators and casts
- static ConstantExpr *get(unsigned Opcode, Constant *C, const Type *Ty);
+ // Cast constant expr
+ static ConstantExpr *getCast(Constant *C, const Type *Ty);
// Binary constant expr - Use with binary operators...
static ConstantExpr *get(unsigned Opcode, Constant *C1, Constant *C2);
diff --git a/lib/AsmParser/llvmAsmParser.y b/lib/AsmParser/llvmAsmParser.y
index 6b858650b7..923e48d36b 100644
--- a/lib/AsmParser/llvmAsmParser.y
+++ b/lib/AsmParser/llvmAsmParser.y
@@ -962,7 +962,7 @@ ConstVal: Types '[' ConstVector ']' { // Nonempty unsized arr
// FIXME: ConstExpr::get never return null! Do checking here in the parser.
ConstExpr: Types CAST ConstVal {
- $$ = ConstantExpr::get(Instruction::Cast, $3, $1->get());
+ $$ = ConstantExpr::getCast($3, $1->get());
delete $1;
}
| Types GETELEMENTPTR '(' ConstVal IndexList ')' {
diff --git a/lib/Bytecode/Reader/ConstantReader.cpp b/lib/Bytecode/Reader/ConstantReader.cpp
index 921b875644..37e201f280 100644
--- a/lib/Bytecode/Reader/ConstantReader.cpp
+++ b/lib/Bytecode/Reader/ConstantReader.cpp
@@ -217,7 +217,8 @@ bool BytecodeParser::parseConstantValue(const uchar *&Buf, const uchar *EndBuf,
// Construct a ConstantExpr of the appropriate kind
if (isExprNumArgs == 1) { // All one-operand expressions
- V = ConstantExpr::get(Opcode, ArgVec[0], Ty);
+ assert(Opcode == Instruction::Cast);
+ V = ConstantExpr::getCast(ArgVec[0], Ty);
} else if (Opcode == Instruction::GetElementPtr) { // GetElementPtr
std::vector<Constant*> IdxList(ArgVec.begin()+1, ArgVec.end());
V = ConstantExpr::getGetElementPtr(ArgVec[0], IdxList);
diff --git a/lib/Bytecode/Reader/InstructionReader.cpp b/lib/Bytecode/Reader/InstructionReader.cpp
index 0916b2b876..0de8f39c57 100644
--- a/lib/Bytecode/Reader/InstructionReader.cpp
+++ b/lib/Bytecode/Reader/InstructionReader.cpp
@@ -122,13 +122,8 @@ bool BytecodeParser::ParseInstruction(const uchar *&Buf, const uchar *EndBuf,
if (ParseRawInst(Buf, EndBuf, Raw))
return failure(true);
- if (Raw.Opcode >= Instruction::FirstUnaryOp &&
- Raw.Opcode < Instruction::NumUnaryOps && Raw.NumOperands == 1) {
- Res = UnaryOperator::create((Instruction::UnaryOps)Raw.Opcode,
- getValue(Raw.Ty,Raw.Arg1));
- return false;
- } else if (Raw.Opcode >= Instruction::FirstBinaryOp &&
- Raw.Opcode < Instruction::NumBinaryOps && Raw.NumOperands == 2) {
+ if (Raw.Opcode >= Instruction::FirstBinaryOp &&
+ Raw.Opcode < Instruction::NumBinaryOps && Raw.NumOperands == 2) {
Res = BinaryOperator::create((Instruction::BinaryOps)Raw.Opcode,
getValue(Raw.Ty, Raw.Arg1),
getValue(Raw.Ty, Raw.Arg2));
diff --git a/lib/Linker/LinkModules.cpp b/lib/Linker/LinkModules.cpp
index 48e40d0b3d..21e25b444a 100644
--- a/lib/Linker/LinkModules.cpp
+++ b/lib/Linker/LinkModules.cpp
@@ -119,10 +119,10 @@ static Value *RemapOperand(const Value *In, map<const Value*, Value*> &LocalMap,
Result = ConstantPointerRef::get(cast<GlobalValue>(V));
} else if (const ConstantExpr *CE = dyn_cast<ConstantExpr>(CPV)) {
if (CE->getNumOperands() == 1) {
- // Cast instruction, unary operator
+ // Cast instruction
+ assert(CE->getOpcode() == Instruction::Cast);
Value *V = RemapOperand(CE->getOperand(0), LocalMap, GlobalMap);
- Result = ConstantExpr::get(CE->getOpcode(), cast<Constant>(V),
- CE->getType());
+ Result = ConstantExpr::getCast(cast<Constant>(V), CE->getType());
} else if (CE->getNumOperands() == 2) {
// Binary operator...
Value *V1 = RemapOperand(CE->getOperand(0), LocalMap, GlobalMap);
diff --git a/lib/Transforms/Utils/Linker.cpp b/lib/Transforms/Utils/Linker.cpp
index 48e40d0b3d..21e25b444a 100644
--- a/lib/Transforms/Utils/Linker.cpp
+++ b/lib/Transforms/Utils/Linker.cpp
@@ -119,10 +119,10 @@ static Value *RemapOperand(const Value *In, map<const Value*, Value*> &LocalMap,
Result = ConstantPointerRef::get(cast<GlobalValue>(V));
} else if (const ConstantExpr *CE = dyn_cast<ConstantExpr>(CPV)) {
if (CE->getNumOperands() == 1) {
- // Cast instruction, unary operator
+ // Cast instruction
+ assert(CE->getOpcode() == Instruction::Cast);
Value *V = RemapOperand(CE->getOperand(0), LocalMap, GlobalMap);
- Result = ConstantExpr::get(CE->getOpcode(), cast<Constant>(V),
- CE->getType());
+ Result = ConstantExpr::getCast(cast<Constant>(V), CE->getType());
} else if (CE->getNumOperands() == 2) {
// Binary operator...
Value *V1 = RemapOperand(CE->getOperand(0), LocalMap, GlobalMap);
diff --git a/lib/VMCore/Constants.cpp b/lib/VMCore/Constants.cpp
index 2aef498b36..ff803dcf61 100644
--- a/lib/VMCore/Constants.cpp
+++ b/lib/VMCore/Constants.cpp
@@ -466,26 +466,16 @@ ConstantPointerRef *ConstantPointerRef::get(GlobalValue *GV) {
typedef pair<unsigned, vector<Constant*> > ExprMapKeyType;
static ValueMap<const ExprMapKeyType, ConstantExpr> ExprConstants;
-ConstantExpr *ConstantExpr::get(unsigned Opcode, Constant *C, const Type *Ty) {
+ConstantExpr *ConstantExpr::getCast(Constant *C, const Type *Ty) {
// Look up the constant in the table first to ensure uniqueness
vector<Constant*> argVec(1, C);
- const ExprMapKeyType &Key = make_pair(Opcode, argVec);
+ const ExprMapKeyType &Key = make_pair(Instruction::Cast, argVec);
ConstantExpr *Result = ExprConstants.get(Ty, Key);
if (Result) return Result;
// Its not in the table so create a new one and put it in the table.
- // Check the operands for consistency first
- assert(Opcode == Instruction::Cast ||
- (Opcode >= Instruction::FirstUnaryOp &&
- Opcode < Instruction::NumUnaryOps) &&
- "Invalid opcode in unary ConstantExpr!");
-
- // type of operand will not match result for Cast operation
- assert((Opcode == Instruction::Cast || Ty == C->getType()) &&
- "Type of operand in unary constant expression should match result");
-
- Result = new ConstantExpr(Opcode, C, Ty);
+ Result = new ConstantExpr(Instruction::Cast, C, Ty);
ExprConstants.add(Ty, Key, Result);
return Result;
}
diff --git a/lib/VMCore/Linker.cpp b/lib/VMCore/Linker.cpp
index 48e40d0b3d..21e25b444a 100644
--- a/lib/VMCore/Linker.cpp
+++ b/lib/VMCore/Linker.cpp
@@ -119,10 +119,10 @@ static Value *RemapOperand(const Value *In, map<const Value*, Value*> &LocalMap,
Result = ConstantPointerRef::get(cast<GlobalValue>(V));
} else if (const ConstantExpr *CE = dyn_cast<ConstantExpr>(CPV)) {
if (CE->getNumOperands() == 1) {
- // Cast instruction, unary operator
+ // Cast instruction
+ assert(CE->getOpcode() == Instruction::Cast);
Value *V = RemapOperand(CE->getOperand(0), LocalMap, GlobalMap);
- Result = ConstantExpr::get(CE->getOpcode(), cast<Constant>(V),
- CE->getType());
+ Result = ConstantExpr::getCast(cast<Constant>(V), CE->getType());
} else if (CE->getNumOperands() == 2) {
// Binary operator...
Value *V1 = RemapOperand(CE->getOperand(0), LocalMap, GlobalMap);