// Increment the loaded index value
if ( ival == 0 ) ival = One;
- CastInst* caster = CastInst::createInferredCast( ival, Type::LongTy );
+ CastInst* caster = CastInst::createSExtOrBitCast( ival, Type::LongTy );
bb->getInstList().push_back( caster );
BinaryOperator* addop = BinaryOperator::create( Instruction::Add,
loadop, caster);
// Decrement the loaded index value
if ( ival == 0 ) ival = One;
- CastInst* caster = CastInst::createInferredCast( ival, Type::LongTy );
+ CastInst* caster = CastInst::createSExtOrBitCast( ival, Type::LongTy );
bb->getInstList().push_back( caster );
BinaryOperator* subop = BinaryOperator::create( Instruction::Sub,
loadop, caster);
}
else
{
- CastInst* caster = CastInst::createInferredCast( index, Type::LongTy );
+ CastInst* caster = CastInst::createSExtOrBitCast( index, Type::LongTy );
bb->getInstList().push_back( caster );
BinaryOperator* subop = BinaryOperator::create(
Instruction::Sub, loadop, caster );
get_stack_pointer( bb ) );
// Cast the value to a long .. hopefully it works
- CastInst* cast_inst = CastInst::createInferredCast( val, Type::LongTy );
+ Instruction::CastOps opcode =
+ (isa<PointerType>(val->getType()) ? Instruction::PtrToInt :
+ (val->getType()->getPrimitiveSizeInBits() < 64 ? Instruction::SExt :
+ Instruction::BitCast));
+ CastInst* cast_inst = CastInst::create(opcode, val, Type::LongTy );
bb->getInstList().push_back( cast_inst );
// Store the value
// Cast the integer to a sbyte*
CastInst* caster =
- CastInst::createInferredCast( loader, PointerType::get(Type::SByteTy) );
+ new IntToPtrInst(loader, PointerType::get(Type::SByteTy));
bb->getInstList().push_back( caster );
// Decrement stack index
// Cast the integer to a sbyte*
CastInst* caster =
- CastInst::createInferredCast( loader, PointerType::get(Type::SByteTy) );
+ new IntToPtrInst(loader, PointerType::get(Type::SByteTy) );
bb->getInstList().push_back( caster );
// Return the value
if (echo) bb->setName("SHL");
LoadInst* op1 = cast<LoadInst>(pop_integer(bb));
LoadInst* op2 = cast<LoadInst>(pop_integer(bb));
- CastInst* castop = CastInst::createInferredCast( op1, Type::UByteTy );
+ CastInst* castop = new TruncInst( op1, Type::UByteTy );
bb->getInstList().push_back( castop );
ShiftInst* shlop = new ShiftInst( Instruction::Shl, op2, castop );
bb->getInstList().push_back( shlop );
if (echo) bb->setName("SHR");
LoadInst* op1 = cast<LoadInst>(pop_integer(bb));
LoadInst* op2 = cast<LoadInst>(pop_integer(bb));
- CastInst* castop = CastInst::createInferredCast( op1, Type::UByteTy );
+ CastInst* castop = new TruncInst( op1, Type::UByteTy );
bb->getInstList().push_back( castop );
ShiftInst* shrop = new ShiftInst( Instruction::AShr, op2, castop );
bb->getInstList().push_back( shrop );
LoadInst* op1 = cast<LoadInst>( pop_integer(bb) );
// Make sure its a UIntTy
- CastInst* caster = CastInst::createInferredCast( op1, Type::UIntTy );
+ CastInst* caster = CastInst::createTruncOrBitCast( op1, Type::UIntTy );
bb->getInstList().push_back( caster );
// Allocate the bytes
if (echo) bb->setName("GET");
// Get the character index
LoadInst* op1 = cast<LoadInst>( stack_top(bb) );
- CastInst* chr_idx = CastInst::createInferredCast( op1, Type::LongTy );
+ CastInst* chr_idx = CastInst::createSExtOrBitCast( op1, Type::LongTy );
bb->getInstList().push_back( chr_idx );
// Get the String pointer
// Get the value and push it
LoadInst* loader = new LoadInst( gep );
bb->getInstList().push_back( loader );
- CastInst* caster = CastInst::createInferredCast( loader, Type::IntTy );
+ CastInst* caster = CastInst::createTruncOrBitCast(loader, Type::IntTy);
bb->getInstList().push_back( caster );
// Push the result back on stack
// Get the character index
LoadInst* w2 = cast<LoadInst>( pop_integer(bb) );
- CastInst* chr_idx = CastInst::createInferredCast( w2, Type::LongTy );
+ CastInst* chr_idx = CastInst::createSExtOrBitCast( w2, Type::LongTy );
bb->getInstList().push_back( chr_idx );
// Get the String pointer
bb->getInstList().push_back( gep );
// Cast the value and put it
- CastInst* caster = CastInst::createInferredCast( w1, Type::SByteTy );
+ CastInst* caster = new TruncInst( w1, Type::SByteTy );
bb->getInstList().push_back( caster );
StoreInst* storer = new StoreInst( caster, gep );
bb->getInstList().push_back( storer );
LoadInst* op1 = cast<LoadInst>(pop_integer(bb));
// Cast down to an integer
- CastInst* caster = CastInst::createInferredCast( op1, Type::IntTy );
+ CastInst* caster = new TruncInst( op1, Type::IntTy );
bb->getInstList().push_back( caster );
// Call exit(3)