mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-09-24 23:28:41 +00:00
land David Blaikie's patch to de-constify Type, with a few tweaks.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135375 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -34,12 +34,12 @@ class LLVMContext;
|
||||
///
|
||||
class TerminatorInst : public Instruction {
|
||||
protected:
|
||||
TerminatorInst(const Type *Ty, Instruction::TermOps iType,
|
||||
TerminatorInst(Type *Ty, Instruction::TermOps iType,
|
||||
Use *Ops, unsigned NumOps,
|
||||
Instruction *InsertBefore = 0)
|
||||
: Instruction(Ty, iType, Ops, NumOps, InsertBefore) {}
|
||||
|
||||
TerminatorInst(const Type *Ty, Instruction::TermOps iType,
|
||||
TerminatorInst(Type *Ty, Instruction::TermOps iType,
|
||||
Use *Ops, unsigned NumOps, BasicBlock *InsertAtEnd)
|
||||
: Instruction(Ty, iType, Ops, NumOps, InsertAtEnd) {}
|
||||
|
||||
@@ -91,12 +91,12 @@ class UnaryInstruction : public Instruction {
|
||||
void *operator new(size_t, unsigned); // Do not implement
|
||||
|
||||
protected:
|
||||
UnaryInstruction(const Type *Ty, unsigned iType, Value *V,
|
||||
UnaryInstruction(Type *Ty, unsigned iType, Value *V,
|
||||
Instruction *IB = 0)
|
||||
: Instruction(Ty, iType, &Op<0>(), 1, IB) {
|
||||
Op<0>() = V;
|
||||
}
|
||||
UnaryInstruction(const Type *Ty, unsigned iType, Value *V, BasicBlock *IAE)
|
||||
UnaryInstruction(Type *Ty, unsigned iType, Value *V, BasicBlock *IAE)
|
||||
: Instruction(Ty, iType, &Op<0>(), 1, IAE) {
|
||||
Op<0>() = V;
|
||||
}
|
||||
@@ -141,9 +141,9 @@ class BinaryOperator : public Instruction {
|
||||
void *operator new(size_t, unsigned); // Do not implement
|
||||
protected:
|
||||
void init(BinaryOps iType);
|
||||
BinaryOperator(BinaryOps iType, Value *S1, Value *S2, const Type *Ty,
|
||||
BinaryOperator(BinaryOps iType, Value *S1, Value *S2, Type *Ty,
|
||||
const Twine &Name, Instruction *InsertBefore);
|
||||
BinaryOperator(BinaryOps iType, Value *S1, Value *S2, const Type *Ty,
|
||||
BinaryOperator(BinaryOps iType, Value *S1, Value *S2, Type *Ty,
|
||||
const Twine &Name, BasicBlock *InsertAtEnd);
|
||||
virtual BinaryOperator *clone_impl() const;
|
||||
public:
|
||||
@@ -390,13 +390,13 @@ DEFINE_TRANSPARENT_OPERAND_ACCESSORS(BinaryOperator, Value)
|
||||
class CastInst : public UnaryInstruction {
|
||||
protected:
|
||||
/// @brief Constructor with insert-before-instruction semantics for subclasses
|
||||
CastInst(const Type *Ty, unsigned iType, Value *S,
|
||||
CastInst(Type *Ty, unsigned iType, Value *S,
|
||||
const Twine &NameStr = "", Instruction *InsertBefore = 0)
|
||||
: UnaryInstruction(Ty, iType, S, InsertBefore) {
|
||||
setName(NameStr);
|
||||
}
|
||||
/// @brief Constructor with insert-at-end-of-block semantics for subclasses
|
||||
CastInst(const Type *Ty, unsigned iType, Value *S,
|
||||
CastInst(Type *Ty, unsigned iType, Value *S,
|
||||
const Twine &NameStr, BasicBlock *InsertAtEnd)
|
||||
: UnaryInstruction(Ty, iType, S, InsertAtEnd) {
|
||||
setName(NameStr);
|
||||
@@ -411,7 +411,7 @@ public:
|
||||
static CastInst *Create(
|
||||
Instruction::CastOps, ///< The opcode of the cast instruction
|
||||
Value *S, ///< The value to be casted (operand 0)
|
||||
const Type *Ty, ///< The type to which cast should be made
|
||||
Type *Ty, ///< The type to which cast should be made
|
||||
const Twine &Name = "", ///< Name for the instruction
|
||||
Instruction *InsertBefore = 0 ///< Place to insert the instruction
|
||||
);
|
||||
@@ -424,7 +424,7 @@ public:
|
||||
static CastInst *Create(
|
||||
Instruction::CastOps, ///< The opcode for the cast instruction
|
||||
Value *S, ///< The value to be casted (operand 0)
|
||||
const Type *Ty, ///< The type to which operand is casted
|
||||
Type *Ty, ///< The type to which operand is casted
|
||||
const Twine &Name, ///< The name for the instruction
|
||||
BasicBlock *InsertAtEnd ///< The block to insert the instruction into
|
||||
);
|
||||
@@ -432,7 +432,7 @@ public:
|
||||
/// @brief Create a ZExt or BitCast cast instruction
|
||||
static CastInst *CreateZExtOrBitCast(
|
||||
Value *S, ///< The value to be casted (operand 0)
|
||||
const Type *Ty, ///< The type to which cast should be made
|
||||
Type *Ty, ///< The type to which cast should be made
|
||||
const Twine &Name = "", ///< Name for the instruction
|
||||
Instruction *InsertBefore = 0 ///< Place to insert the instruction
|
||||
);
|
||||
@@ -440,7 +440,7 @@ public:
|
||||
/// @brief Create a ZExt or BitCast cast instruction
|
||||
static CastInst *CreateZExtOrBitCast(
|
||||
Value *S, ///< The value to be casted (operand 0)
|
||||
const Type *Ty, ///< The type to which operand is casted
|
||||
Type *Ty, ///< The type to which operand is casted
|
||||
const Twine &Name, ///< The name for the instruction
|
||||
BasicBlock *InsertAtEnd ///< The block to insert the instruction into
|
||||
);
|
||||
@@ -448,7 +448,7 @@ public:
|
||||
/// @brief Create a SExt or BitCast cast instruction
|
||||
static CastInst *CreateSExtOrBitCast(
|
||||
Value *S, ///< The value to be casted (operand 0)
|
||||
const Type *Ty, ///< The type to which cast should be made
|
||||
Type *Ty, ///< The type to which cast should be made
|
||||
const Twine &Name = "", ///< Name for the instruction
|
||||
Instruction *InsertBefore = 0 ///< Place to insert the instruction
|
||||
);
|
||||
@@ -456,7 +456,7 @@ public:
|
||||
/// @brief Create a SExt or BitCast cast instruction
|
||||
static CastInst *CreateSExtOrBitCast(
|
||||
Value *S, ///< The value to be casted (operand 0)
|
||||
const Type *Ty, ///< The type to which operand is casted
|
||||
Type *Ty, ///< The type to which operand is casted
|
||||
const Twine &Name, ///< The name for the instruction
|
||||
BasicBlock *InsertAtEnd ///< The block to insert the instruction into
|
||||
);
|
||||
@@ -464,7 +464,7 @@ public:
|
||||
/// @brief Create a BitCast or a PtrToInt cast instruction
|
||||
static CastInst *CreatePointerCast(
|
||||
Value *S, ///< The pointer value to be casted (operand 0)
|
||||
const Type *Ty, ///< The type to which operand is casted
|
||||
Type *Ty, ///< The type to which operand is casted
|
||||
const Twine &Name, ///< The name for the instruction
|
||||
BasicBlock *InsertAtEnd ///< The block to insert the instruction into
|
||||
);
|
||||
@@ -472,7 +472,7 @@ public:
|
||||
/// @brief Create a BitCast or a PtrToInt cast instruction
|
||||
static CastInst *CreatePointerCast(
|
||||
Value *S, ///< The pointer value to be casted (operand 0)
|
||||
const Type *Ty, ///< The type to which cast should be made
|
||||
Type *Ty, ///< The type to which cast should be made
|
||||
const Twine &Name = "", ///< Name for the instruction
|
||||
Instruction *InsertBefore = 0 ///< Place to insert the instruction
|
||||
);
|
||||
@@ -480,7 +480,7 @@ public:
|
||||
/// @brief Create a ZExt, BitCast, or Trunc for int -> int casts.
|
||||
static CastInst *CreateIntegerCast(
|
||||
Value *S, ///< The pointer value to be casted (operand 0)
|
||||
const Type *Ty, ///< The type to which cast should be made
|
||||
Type *Ty, ///< The type to which cast should be made
|
||||
bool isSigned, ///< Whether to regard S as signed or not
|
||||
const Twine &Name = "", ///< Name for the instruction
|
||||
Instruction *InsertBefore = 0 ///< Place to insert the instruction
|
||||
@@ -489,7 +489,7 @@ public:
|
||||
/// @brief Create a ZExt, BitCast, or Trunc for int -> int casts.
|
||||
static CastInst *CreateIntegerCast(
|
||||
Value *S, ///< The integer value to be casted (operand 0)
|
||||
const Type *Ty, ///< The integer type to which operand is casted
|
||||
Type *Ty, ///< The integer type to which operand is casted
|
||||
bool isSigned, ///< Whether to regard S as signed or not
|
||||
const Twine &Name, ///< The name for the instruction
|
||||
BasicBlock *InsertAtEnd ///< The block to insert the instruction into
|
||||
@@ -498,7 +498,7 @@ public:
|
||||
/// @brief Create an FPExt, BitCast, or FPTrunc for fp -> fp casts
|
||||
static CastInst *CreateFPCast(
|
||||
Value *S, ///< The floating point value to be casted
|
||||
const Type *Ty, ///< The floating point type to cast to
|
||||
Type *Ty, ///< The floating point type to cast to
|
||||
const Twine &Name = "", ///< Name for the instruction
|
||||
Instruction *InsertBefore = 0 ///< Place to insert the instruction
|
||||
);
|
||||
@@ -506,7 +506,7 @@ public:
|
||||
/// @brief Create an FPExt, BitCast, or FPTrunc for fp -> fp casts
|
||||
static CastInst *CreateFPCast(
|
||||
Value *S, ///< The floating point value to be casted
|
||||
const Type *Ty, ///< The floating point type to cast to
|
||||
Type *Ty, ///< The floating point type to cast to
|
||||
const Twine &Name, ///< The name for the instruction
|
||||
BasicBlock *InsertAtEnd ///< The block to insert the instruction into
|
||||
);
|
||||
@@ -514,7 +514,7 @@ public:
|
||||
/// @brief Create a Trunc or BitCast cast instruction
|
||||
static CastInst *CreateTruncOrBitCast(
|
||||
Value *S, ///< The value to be casted (operand 0)
|
||||
const Type *Ty, ///< The type to which cast should be made
|
||||
Type *Ty, ///< The type to which cast should be made
|
||||
const Twine &Name = "", ///< Name for the instruction
|
||||
Instruction *InsertBefore = 0 ///< Place to insert the instruction
|
||||
);
|
||||
@@ -522,15 +522,15 @@ public:
|
||||
/// @brief Create a Trunc or BitCast cast instruction
|
||||
static CastInst *CreateTruncOrBitCast(
|
||||
Value *S, ///< The value to be casted (operand 0)
|
||||
const Type *Ty, ///< The type to which operand is casted
|
||||
Type *Ty, ///< The type to which operand is casted
|
||||
const Twine &Name, ///< The name for the instruction
|
||||
BasicBlock *InsertAtEnd ///< The block to insert the instruction into
|
||||
);
|
||||
|
||||
/// @brief Check whether it is valid to call getCastOpcode for these types.
|
||||
static bool isCastable(
|
||||
const Type *SrcTy, ///< The Type from which the value should be cast.
|
||||
const Type *DestTy ///< The Type to which the value should be cast.
|
||||
Type *SrcTy, ///< The Type from which the value should be cast.
|
||||
Type *DestTy ///< The Type to which the value should be cast.
|
||||
);
|
||||
|
||||
/// Returns the opcode necessary to cast Val into Ty using usual casting
|
||||
@@ -539,7 +539,7 @@ public:
|
||||
static Instruction::CastOps getCastOpcode(
|
||||
const Value *Val, ///< The value to cast
|
||||
bool SrcIsSigned, ///< Whether to treat the source as signed
|
||||
const Type *Ty, ///< The Type to which the value should be casted
|
||||
Type *Ty, ///< The Type to which the value should be casted
|
||||
bool DstIsSigned ///< Whether to treate the dest. as signed
|
||||
);
|
||||
|
||||
@@ -568,14 +568,14 @@ public:
|
||||
/// @brief Determine if the described cast is a no-op cast.
|
||||
static bool isNoopCast(
|
||||
Instruction::CastOps Opcode, ///< Opcode of cast
|
||||
const Type *SrcTy, ///< SrcTy of cast
|
||||
const Type *DstTy, ///< DstTy of cast
|
||||
const Type *IntPtrTy ///< Integer type corresponding to Ptr types, or null
|
||||
Type *SrcTy, ///< SrcTy of cast
|
||||
Type *DstTy, ///< DstTy of cast
|
||||
Type *IntPtrTy ///< Integer type corresponding to Ptr types, or null
|
||||
);
|
||||
|
||||
/// @brief Determine if this cast is a no-op cast.
|
||||
bool isNoopCast(
|
||||
const Type *IntPtrTy ///< Integer type corresponding to pointer
|
||||
Type *IntPtrTy ///< Integer type corresponding to pointer
|
||||
) const;
|
||||
|
||||
/// Determine how a pair of casts can be eliminated, if they can be at all.
|
||||
@@ -587,10 +587,10 @@ public:
|
||||
static unsigned isEliminableCastPair(
|
||||
Instruction::CastOps firstOpcode, ///< Opcode of first cast
|
||||
Instruction::CastOps secondOpcode, ///< Opcode of second cast
|
||||
const Type *SrcTy, ///< SrcTy of 1st cast
|
||||
const Type *MidTy, ///< DstTy of 1st cast & SrcTy of 2nd cast
|
||||
const Type *DstTy, ///< DstTy of 2nd cast
|
||||
const Type *IntPtrTy ///< Integer type corresponding to Ptr types, or null
|
||||
Type *SrcTy, ///< SrcTy of 1st cast
|
||||
Type *MidTy, ///< DstTy of 1st cast & SrcTy of 2nd cast
|
||||
Type *DstTy, ///< DstTy of 2nd cast
|
||||
Type *IntPtrTy ///< Integer type corresponding to Ptr types, or null
|
||||
);
|
||||
|
||||
/// @brief Return the opcode of this CastInst
|
||||
@@ -599,15 +599,15 @@ public:
|
||||
}
|
||||
|
||||
/// @brief Return the source type, as a convenience
|
||||
const Type* getSrcTy() const { return getOperand(0)->getType(); }
|
||||
Type* getSrcTy() const { return getOperand(0)->getType(); }
|
||||
/// @brief Return the destination type, as a convenience
|
||||
const Type* getDestTy() const { return getType(); }
|
||||
Type* getDestTy() const { return getType(); }
|
||||
|
||||
/// This method can be used to determine if a cast from S to DstTy using
|
||||
/// Opcode op is valid or not.
|
||||
/// @returns true iff the proposed cast is valid.
|
||||
/// @brief Determine if a cast is valid without creating one.
|
||||
static bool castIsValid(Instruction::CastOps op, Value *S, const Type *DstTy);
|
||||
static bool castIsValid(Instruction::CastOps op, Value *S, Type *DstTy);
|
||||
|
||||
/// @brief Methods for support type inquiry through isa, cast, and dyn_cast:
|
||||
static inline bool classof(const CastInst *) { return true; }
|
||||
@@ -629,11 +629,11 @@ class CmpInst : public Instruction {
|
||||
void *operator new(size_t, unsigned); // DO NOT IMPLEMENT
|
||||
CmpInst(); // do not implement
|
||||
protected:
|
||||
CmpInst(const Type *ty, Instruction::OtherOps op, unsigned short pred,
|
||||
CmpInst(Type *ty, Instruction::OtherOps op, unsigned short pred,
|
||||
Value *LHS, Value *RHS, const Twine &Name = "",
|
||||
Instruction *InsertBefore = 0);
|
||||
|
||||
CmpInst(const Type *ty, Instruction::OtherOps op, unsigned short pred,
|
||||
CmpInst(Type *ty, Instruction::OtherOps op, unsigned short pred,
|
||||
Value *LHS, Value *RHS, const Twine &Name,
|
||||
BasicBlock *InsertAtEnd);
|
||||
|
||||
@@ -825,8 +825,8 @@ public:
|
||||
}
|
||||
|
||||
/// @brief Create a result type for fcmp/icmp
|
||||
static const Type* makeCmpResultType(const Type* opnd_type) {
|
||||
if (const VectorType* vt = dyn_cast<const VectorType>(opnd_type)) {
|
||||
static Type* makeCmpResultType(Type* opnd_type) {
|
||||
if (VectorType* vt = dyn_cast<VectorType>(opnd_type)) {
|
||||
return VectorType::get(Type::getInt1Ty(opnd_type->getContext()),
|
||||
vt->getNumElements());
|
||||
}
|
||||
|
Reference in New Issue
Block a user