mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-31 08:16: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:
		| @@ -1548,6 +1548,31 @@ CastInst *CastInst::createTruncOrBitCast(Value *S, const Type *Ty, | |||||||
|   return create(Instruction::Trunc, S, Ty, Name, InsertAtEnd); |   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  | // 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  | // types and size of the operand. This, basically, is a parallel of the  | ||||||
| // logic in the checkCast function below.  This axiom should hold: | // logic in the checkCast function below.  This axiom should hold: | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user