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() {
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),
inline ~BinaryOperator() { dropAllReferences(); }
virtual Instruction *clone() const {
- return Instruction::getBinaryOperator(getInstType(), Source1, Source2);
+ return getBinaryOperator(getInstType(), Source1, Source2);
}
virtual void dropAllReferences() {
return iType >= FirstBinaryOp && iType < NumBinaryOps;
}
- static Instruction *getBinaryOperator(unsigned Op, Value *S1, Value *S2);
- static Instruction *getUnaryOperator (unsigned Op, Value *Source);
-
//----------------------------------------------------------------------
// Exported enumerations...
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
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!");
;
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!");
;
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!");
}
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);
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);
}
-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;