mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-29 22:50:47 +00:00
Implement createPointerCast.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32212 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
c0459fb7f5
commit
330d86d748
@ -1548,6 +1548,31 @@ CastInst *CastInst::createTruncOrBitCast(Value *S, const Type *Ty,
|
||||
return create(Instruction::Trunc, S, Ty, Name, InsertAtEnd);
|
||||
}
|
||||
|
||||
CastInst *CastInst::createPointerCast(Value *S, const Type *Ty,
|
||||
const std::string &Name,
|
||||
BasicBlock *InsertAtEnd) {
|
||||
assert(isa<PointerType>(S->getType()) && "Invalid cast");
|
||||
assert((Ty->isIntegral() || Ty->getTypeID() == Type::PointerTyID) &&
|
||||
"Invalid cast");
|
||||
|
||||
if (Ty->isIntegral())
|
||||
return create(Instruction::PtrToInt, S, Ty, Name, InsertAtEnd);
|
||||
return create(Instruction::BitCast, S, Ty, Name, InsertAtEnd);
|
||||
}
|
||||
|
||||
/// @brief Create a BitCast or a PtrToInt cast instruction
|
||||
CastInst *CastInst::createPointerCast(Value *S, const Type *Ty,
|
||||
const std::string &Name,
|
||||
Instruction *InsertBefore) {
|
||||
assert(isa<PointerType>(S->getType()) && "Invalid cast");
|
||||
assert((Ty->isIntegral() || Ty->getTypeID() == Type::PointerTyID) &&
|
||||
"Invalid cast");
|
||||
|
||||
if (Ty->isIntegral())
|
||||
return create(Instruction::PtrToInt, S, Ty, Name, InsertBefore);
|
||||
return create(Instruction::BitCast, S, Ty, Name, InsertBefore);
|
||||
}
|
||||
|
||||
// Provide a way to get a "cast" where the cast opcode is inferred from the
|
||||
// types and size of the operand. This, basically, is a parallel of the
|
||||
// logic in the checkCast function below. This axiom should hold:
|
||||
|
Loading…
Reference in New Issue
Block a user