From 9f3d27654a9c60104c93cacc869709d5d30e5367 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 7 Jul 2001 20:17:23 +0000 Subject: [PATCH] Convert BinaryOperand and UnaryOperator to only take instruction types of the appropriate enum git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/InstrTypes.h | 16 ++++++++++++---- include/llvm/iOperators.h | 2 +- lib/Bytecode/Reader/InstructionReader.cpp | 8 +++++--- lib/VMCore/InstrTypes.cpp | 2 +- lib/VMCore/iOperators.cpp | 4 ++-- 5 files changed, 21 insertions(+), 11 deletions(-) diff --git a/include/llvm/InstrTypes.h b/include/llvm/InstrTypes.h index 105775fe84a..fa0ce87c9ca 100644 --- a/include/llvm/InstrTypes.h +++ b/include/llvm/InstrTypes.h @@ -55,14 +55,18 @@ public: // create() - Construct a unary instruction, given the opcode // and its operand. // - static UnaryOperator *create(unsigned Op, Value *Source); + static UnaryOperator *create(UnaryOps Op, Value *Source); - UnaryOperator(Value *S, unsigned iType, const string &Name = "") + UnaryOperator(Value *S, UnaryOps iType, const string &Name = "") : Instruction(S->getType(), iType, Name) { Operands.reserve(1); Operands.push_back(Use(S, this)); } + inline UnaryOps getOpcode() const { + return (UnaryOps)Instruction::getOpcode(); + } + virtual Instruction *clone() const { return create(getOpcode(), Operands[0]); } @@ -82,10 +86,10 @@ public: // create() - Construct a binary instruction, given the opcode // and the two operands. // - static BinaryOperator *create(unsigned Op, Value *S1, Value *S2, + static BinaryOperator *create(BinaryOps Op, Value *S1, Value *S2, const string &Name = ""); - BinaryOperator(unsigned iType, Value *S1, Value *S2, + BinaryOperator(BinaryOps iType, Value *S1, Value *S2, const string &Name = "") : Instruction(S1->getType(), iType, Name) { Operands.reserve(2); @@ -95,6 +99,10 @@ public: Operands[0]->getType() == Operands[1]->getType()); } + inline BinaryOps getOpcode() const { + return (BinaryOps)Instruction::getOpcode(); + } + virtual Instruction *clone() const { return create(getOpcode(), Operands[0], Operands[1]); } diff --git a/include/llvm/iOperators.h b/include/llvm/iOperators.h index 76e4e392fe4..4b6109a8541 100644 --- a/include/llvm/iOperators.h +++ b/include/llvm/iOperators.h @@ -18,7 +18,7 @@ class GenericBinaryInst : public BinaryOperator { public: - GenericBinaryInst(unsigned Opcode, Value *S1, Value *S2, + GenericBinaryInst(BinaryOps Opcode, Value *S1, Value *S2, const string &Name = "") : BinaryOperator(Opcode, S1, S2, Name) { } diff --git a/lib/Bytecode/Reader/InstructionReader.cpp b/lib/Bytecode/Reader/InstructionReader.cpp index dac7d374158..ab70e24f513 100644 --- a/lib/Bytecode/Reader/InstructionReader.cpp +++ b/lib/Bytecode/Reader/InstructionReader.cpp @@ -96,12 +96,14 @@ bool BytecodeParser::ParseInstruction(const uchar *&Buf, const uchar *EndBuf, if (Raw.Opcode >= Instruction::FirstUnaryOp && Raw.Opcode < Instruction::NumUnaryOps && Raw.NumOperands == 1) { - Res = UnaryOperator::create(Raw.Opcode,getValue(Raw.Ty,Raw.Arg1)); + 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) { - Res = BinaryOperator::create(Raw.Opcode, getValue(Raw.Ty, Raw.Arg1), - getValue(Raw.Ty, Raw.Arg2)); + Res = BinaryOperator::create((Instruction::BinaryOps)Raw.Opcode, + getValue(Raw.Ty, Raw.Arg1), + getValue(Raw.Ty, Raw.Arg2)); return false; } else if (Raw.Opcode == Instruction::PHINode) { PHINode *PN = new PHINode(Raw.Ty); diff --git a/lib/VMCore/InstrTypes.cpp b/lib/VMCore/InstrTypes.cpp index cda99a9446a..9d3262cbda7 100644 --- a/lib/VMCore/InstrTypes.cpp +++ b/lib/VMCore/InstrTypes.cpp @@ -12,7 +12,7 @@ #include // find // TODO: Move to getUnaryOperator iUnary.cpp when and if it exists! -UnaryOperator *UnaryOperator::create(unsigned Op, Value *Source) { +UnaryOperator *UnaryOperator::create(UnaryOps Op, Value *Source) { switch (Op) { default: cerr << "Don't know how to GetUnaryOperator " << Op << endl; diff --git a/lib/VMCore/iOperators.cpp b/lib/VMCore/iOperators.cpp index ef6933adb25..61d5d26d2b4 100644 --- a/lib/VMCore/iOperators.cpp +++ b/lib/VMCore/iOperators.cpp @@ -7,13 +7,13 @@ #include "llvm/iBinary.h" #include "llvm/Type.h" -BinaryOperator *BinaryOperator::create(unsigned Op, Value *S1, Value *S2, +BinaryOperator *BinaryOperator::create(BinaryOps Op, Value *S1, Value *S2, const string &Name) { switch (Op) { // Binary comparison operators... case SetLT: case SetGT: case SetLE: case SetGE: case SetEQ: case SetNE: - return new SetCondInst((BinaryOps)Op, S1, S2, Name); + return new SetCondInst(Op, S1, S2, Name); default: return new GenericBinaryInst(Op, S1, S2, Name);