summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2001-06-08 21:30:13 +0000
committerChris Lattner <sabre@nondot.org>2001-06-08 21:30:13 +0000
commit477c2ec3e01ddb67c3c079156f2ee2e1858bec42 (patch)
tree0a0978df36c7f87dae60a99848d549ddd3cd509b
parentdaa6ae31c18fd948ceaa05a6ef6712612dd70d7f (diff)
downloadllvm-477c2ec3e01ddb67c3c079156f2ee2e1858bec42.tar.gz
llvm-477c2ec3e01ddb67c3c079156f2ee2e1858bec42.tar.bz2
llvm-477c2ec3e01ddb67c3c079156f2ee2e1858bec42.tar.xz
Moved getBinaryOperator to the BinaryOperator class and the getUnaryOperator
to the UnaryOperator class (from the Instruction class). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/llvm/InstrTypes.h16
-rw-r--r--include/llvm/Instruction.h5
-rw-r--r--lib/AsmParser/llvmAsmParser.cpp4
-rw-r--r--lib/AsmParser/llvmAsmParser.y4
-rw-r--r--lib/Bytecode/Reader/InstructionReader.cpp7
-rw-r--r--lib/VMCore/Instruction.cpp5
6 files changed, 26 insertions, 15 deletions
diff --git a/include/llvm/InstrTypes.h b/include/llvm/InstrTypes.h
index be6ea26974..1bd7a246d0 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 415c307e73..0ac1921682 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 e79f1bf5f6..080d4ea647 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 01709ca5de..3a4873e8bc 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 667e144673..54ca869511 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 4b528f0d94..6cb62ea374 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;