Moved getBinaryOperator to the BinaryOperator class and the getUnaryOperator
authorChris Lattner <sabre@nondot.org>
Fri, 8 Jun 2001 21:30:13 +0000 (21:30 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 8 Jun 2001 21:30:13 +0000 (21:30 +0000)
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

include/llvm/InstrTypes.h
include/llvm/Instruction.h
lib/AsmParser/llvmAsmParser.cpp
lib/AsmParser/llvmAsmParser.y
lib/Bytecode/Reader/InstructionReader.cpp
lib/VMCore/Instruction.cpp

index be6ea26974033bb757c54c3a17c0d564b53badc1..1bd7a246d0aac8aa085c8338eb48ca6ef7b0507c 100644 (file)
@@ -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() {
index 415c307e730c31a70617302d2713bcf91b587fcd..0ac1921682381d1bfc23e033d4260265481cd730 100644 (file)
@@ -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
index e79f1bf5f66e4783c7d34b7651a6c40f8278d6d7..080d4ea647cffb71f95fe89cb3b5bd3f2a745485 100644 (file)
@@ -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!");
   ;
index 01709ca5deb30a9ddff9f6a345cb8956db9265ef..3a4873e8bcba981d700c69d51ae403171cb4a772 100644 (file)
@@ -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!");
   } 
index 667e144673cf78243ecf7f14e2675f7b9842df21..54ca8695115240f7e47f86c41efdeef42eeadd4d 100644 (file)
@@ -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);
index 4b528f0d94ab2294bca410ff237ac7e6d461d255..6cb62ea374aac864994b97460f8196f564f375b6 100644 (file)
@@ -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;