diff options
-rw-r--r-- | include/llvm/InstrTypes.h | 16 | ||||
-rw-r--r-- | include/llvm/Instruction.h | 5 | ||||
-rw-r--r-- | lib/AsmParser/llvmAsmParser.cpp | 4 | ||||
-rw-r--r-- | lib/AsmParser/llvmAsmParser.y | 4 | ||||
-rw-r--r-- | lib/Bytecode/Reader/InstructionReader.cpp | 7 | ||||
-rw-r--r-- | lib/VMCore/Instruction.cpp | 5 |
6 files changed, 26 insertions, 15 deletions
diff --git a/include/llvm/InstrTypes.h b/include/llvm/InstrTypes.h index be6ea26..1bd7a24 100644 --- a/include/llvm/InstrTypes.h +++ b/include/llvm/InstrTypes.h @@ -56,13 +56,19 @@ public: class UnaryOperator : public Instruction { Use Source; public: + + // getUnaryOperator() - Construct a unary instruction, given the opcode + // and its operand. + // + static UnaryOperator *getUnaryOperator(unsigned Op, Value *Source); + UnaryOperator(Value *S, unsigned iType, const string &Name = "") : Instruction(S->getType(), iType, Name), Source(S, this) { } inline ~UnaryOperator() { dropAllReferences(); } virtual Instruction *clone() const { - return Instruction::getUnaryOperator(getInstType(), Source); + return getUnaryOperator(getInstType(), Source); } virtual void dropAllReferences() { @@ -92,6 +98,12 @@ public: class BinaryOperator : public Instruction { Use Source1, Source2; public: + + // getBinaryOperator() - Construct a binary instruction, given the opcode + // and the two operands. + // + static BinaryOperator *getBinaryOperator(unsigned Op, Value *S1, Value *S2); + BinaryOperator(unsigned iType, Value *S1, Value *S2, const string &Name = "") : Instruction(S1->getType(), iType, Name), Source1(S1, this), @@ -101,7 +113,7 @@ public: inline ~BinaryOperator() { dropAllReferences(); } virtual Instruction *clone() const { - return Instruction::getBinaryOperator(getInstType(), Source1, Source2); + return getBinaryOperator(getInstType(), Source1, Source2); } virtual void dropAllReferences() { diff --git a/include/llvm/Instruction.h b/include/llvm/Instruction.h index 415c307..0ac1921 100644 --- a/include/llvm/Instruction.h +++ b/include/llvm/Instruction.h @@ -85,9 +85,6 @@ public: return iType >= FirstBinaryOp && iType < NumBinaryOps; } - static Instruction *getBinaryOperator(unsigned Op, Value *S1, Value *S2); - static Instruction *getUnaryOperator (unsigned Op, Value *Source); - //---------------------------------------------------------------------- // Exported enumerations... @@ -156,7 +153,7 @@ public: unsigned idx; public: typedef OperandIterator<_Inst, _Val> _Self; - typedef forward_iterator_tag iterator_category; + typedef bidirectional_iterator_tag iterator_category; typedef _Val pointer; inline OperandIterator(_Inst T) : Inst(T), idx(0) {} // begin iterator diff --git a/lib/AsmParser/llvmAsmParser.cpp b/lib/AsmParser/llvmAsmParser.cpp index e79f1bf..080d4ea 100644 --- a/lib/AsmParser/llvmAsmParser.cpp +++ b/lib/AsmParser/llvmAsmParser.cpp @@ -1851,7 +1851,7 @@ case 112: case 113: #line 854 "llvmAsmParser.y" { - yyval.InstVal = Instruction::getBinaryOperator(yyvsp[-4].BinaryOpVal, getVal(yyvsp[-3].TypeVal, yyvsp[-2].ValIDVal), getVal(yyvsp[-3].TypeVal, yyvsp[0].ValIDVal)); + yyval.InstVal = BinaryOperator::getBinaryOperator(yyvsp[-4].BinaryOpVal, getVal(yyvsp[-3].TypeVal, yyvsp[-2].ValIDVal), getVal(yyvsp[-3].TypeVal, yyvsp[0].ValIDVal)); if (yyval.InstVal == 0) ThrowException("binary operator returned null!"); ; @@ -1859,7 +1859,7 @@ case 113: case 114: #line 859 "llvmAsmParser.y" { - yyval.InstVal = Instruction::getUnaryOperator(yyvsp[-2].UnaryOpVal, getVal(yyvsp[-1].TypeVal, yyvsp[0].ValIDVal)); + yyval.InstVal = UnaryOperator::getUnaryOperator(yyvsp[-2].UnaryOpVal, getVal(yyvsp[-1].TypeVal, yyvsp[0].ValIDVal)); if (yyval.InstVal == 0) ThrowException("unary operator returned null!"); ; diff --git a/lib/AsmParser/llvmAsmParser.y b/lib/AsmParser/llvmAsmParser.y index 01709ca..3a4873e 100644 --- a/lib/AsmParser/llvmAsmParser.y +++ b/lib/AsmParser/llvmAsmParser.y @@ -852,12 +852,12 @@ ValueRefList : Types ValueRef { // Used for PHI nodes and call statements... ValueRefListE : ValueRefList | /*empty*/ { $$ = 0; } InstVal : BinaryOps Types ValueRef ',' ValueRef { - $$ = Instruction::getBinaryOperator($1, getVal($2, $3), getVal($2, $5)); + $$ = BinaryOperator::getBinaryOperator($1, getVal($2, $3), getVal($2, $5)); if ($$ == 0) ThrowException("binary operator returned null!"); } | UnaryOps Types ValueRef { - $$ = Instruction::getUnaryOperator($1, getVal($2, $3)); + $$ = UnaryOperator::getUnaryOperator($1, getVal($2, $3)); if ($$ == 0) ThrowException("unary operator returned null!"); } diff --git a/lib/Bytecode/Reader/InstructionReader.cpp b/lib/Bytecode/Reader/InstructionReader.cpp index 667e144..54ca869 100644 --- a/lib/Bytecode/Reader/InstructionReader.cpp +++ b/lib/Bytecode/Reader/InstructionReader.cpp @@ -93,12 +93,13 @@ bool BytecodeParser::ParseInstruction(const uchar *&Buf, const uchar *EndBuf, if (Raw.Opcode >= Instruction::FirstUnaryOp && Raw.Opcode < Instruction::NumUnaryOps && Raw.NumOperands == 1) { - Res = Instruction::getUnaryOperator(Raw.Opcode, getValue(Raw.Ty, Raw.Arg1)); + Res = UnaryOperator::getUnaryOperator(Raw.Opcode,getValue(Raw.Ty,Raw.Arg1)); return false; } else if (Raw.Opcode >= Instruction::FirstBinaryOp && Raw.Opcode < Instruction::NumBinaryOps && Raw.NumOperands == 2) { - Res = Instruction::getBinaryOperator(Raw.Opcode, getValue(Raw.Ty, Raw.Arg1), - getValue(Raw.Ty, Raw.Arg2)); + Res = BinaryOperator::getBinaryOperator(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/Instruction.cpp b/lib/VMCore/Instruction.cpp index 4b528f0..6cb62ea 100644 --- a/lib/VMCore/Instruction.cpp +++ b/lib/VMCore/Instruction.cpp @@ -30,7 +30,8 @@ void Instruction::setName(const string &name) { if (PP && hasName()) PP->getSymbolTableSure()->insert(this); } -Instruction *Instruction::getBinaryOperator(unsigned Op, Value *S1, Value *S2) { +BinaryOperator *BinaryOperator::getBinaryOperator(unsigned Op, + Value *S1, Value *S2) { switch (Op) { case Add: return new AddInst(S1, S2); @@ -52,7 +53,7 @@ Instruction *Instruction::getBinaryOperator(unsigned Op, Value *S1, Value *S2) { } -Instruction *Instruction::getUnaryOperator(unsigned Op, Value *Source) { +UnaryOperator *UnaryOperator::getUnaryOperator(unsigned Op, Value *Source) { switch (Op) { default: cerr << "Don't know how to GetUnaryOperator " << Op << endl; |