|
reference, declaration → definition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced
|
Derived Classes
include/llvm/IR/Instructions.h 4712 class TruncInst : public CastInst {
4751 class ZExtInst : public CastInst {
4790 class SExtInst : public CastInst {
4829 class FPTruncInst : public CastInst {
4868 class FPExtInst : public CastInst {
4907 class UIToFPInst : public CastInst {
4946 class SIToFPInst : public CastInst {
4985 class FPToUIInst : public CastInst {
5024 class FPToSIInst : public CastInst {
5063 class IntToPtrInst : public CastInst {
5106 class PtrToIntInst : public CastInst {
5157 class BitCastInst : public CastInst {
5197 class AddrSpaceCastInst : public CastInst {
Declarations
include/llvm/Transforms/Utils/SimplifyIndVar.h 22 class CastInst;
References
include/llvm/Analysis/LoopUnrollAnalyzer.h 89 bool visitCastInst(CastInst &I);
include/llvm/IR/IRBuilder.h 845 InstTy *Insert(InstTy *I, const Twine &Name = "") const {
845 InstTy *Insert(InstTy *I, const Twine &Name = "") const {
1995 return Insert(CastInst::CreateZExtOrBitCast(V, DestTy), Name);
2004 return Insert(CastInst::CreateSExtOrBitCast(V, DestTy), Name);
2013 return Insert(CastInst::CreateTruncOrBitCast(V, DestTy), Name);
2022 return Insert(CastInst::Create(Op, V, DestTy), Name);
2031 return Insert(CastInst::CreatePointerCast(V, DestTy), Name);
2044 return Insert(CastInst::CreatePointerBitCastOrAddrSpaceCast(V, DestTy),
2054 return Insert(CastInst::CreateIntegerCast(V, DestTy, isSigned), Name);
2074 return Insert(CastInst::CreateFPCast(V, DestTy), Name);
include/llvm/IR/InstVisitor.h 267 RetTy visitCastInst(CastInst &I) { DELEGATE(UnaryInstruction);}
include/llvm/IR/InstrTypes.h 461 static CastInst *Create(
474 static CastInst *Create(
483 static CastInst *CreateZExtOrBitCast(
491 static CastInst *CreateZExtOrBitCast(
499 static CastInst *CreateSExtOrBitCast(
507 static CastInst *CreateSExtOrBitCast(
515 static CastInst *CreatePointerCast(
523 static CastInst *CreatePointerCast(
531 static CastInst *CreatePointerBitCastOrAddrSpaceCast(
539 static CastInst *CreatePointerBitCastOrAddrSpaceCast(
552 static CastInst *CreateBitOrPointerCast(
560 static CastInst *CreateIntegerCast(
569 static CastInst *CreateIntegerCast(
578 static CastInst *CreateFPCast(
586 static CastInst *CreateFPCast(
594 static CastInst *CreateTruncOrBitCast(
602 static CastInst *CreateTruncOrBitCast(
include/llvm/IR/Instructions.h 4712 class TruncInst : public CastInst {
4751 class ZExtInst : public CastInst {
4790 class SExtInst : public CastInst {
4829 class FPTruncInst : public CastInst {
4868 class FPExtInst : public CastInst {
4907 class UIToFPInst : public CastInst {
4946 class SIToFPInst : public CastInst {
4985 class FPToUIInst : public CastInst {
5024 class FPToSIInst : public CastInst {
5063 class IntToPtrInst : public CastInst {
5106 class PtrToIntInst : public CastInst {
5157 class BitCastInst : public CastInst {
5197 class AddrSpaceCastInst : public CastInst {
include/llvm/IR/NoFolder.h 255 return CastInst::Create(Op, C, DestTy);
259 return CastInst::CreatePointerCast(C, DestTy);
264 return CastInst::CreateIntegerCast(C, DestTy, isSigned);
268 return CastInst::CreateFPCast(C, DestTy);
284 return CastInst::CreateZExtOrBitCast(C, DestTy);
288 return CastInst::CreateSExtOrBitCast(C, DestTy);
292 return CastInst::CreateTruncOrBitCast(C, DestTy);
include/llvm/IR/PatternMatch.h 47 template <typename Val, typename Pattern> bool match(Val *V, const Pattern &P) {
56 template <typename OpTy> bool match(OpTy *V) {
117 template <typename ITy> bool match(ITy *V) {
1279 template <typename OpTy> bool match(OpTy *V) {
include/llvm/IR/ValueHandle.h 256 ValueTy *getValPtr() const { return static_cast<ValueTy *>(getRawValPtr()); }
257 void setValPtr(ValueTy *P) { setRawValPtr(GetAsValue(P)); }
262 AssertingVH(ValueTy *P) : ValueHandleBase(Assert, GetAsValue(P)) {}
269 operator ValueTy*() const {
273 ValueTy *operator=(ValueTy *RHS) {
273 ValueTy *operator=(ValueTy *RHS) {
277 ValueTy *operator=(const AssertingVH<ValueTy> &RHS) {
277 ValueTy *operator=(const AssertingVH<ValueTy> &RHS) {
282 ValueTy *operator->() const { return getValPtr(); }
283 ValueTy &operator*() const { return *getValPtr(); }
483 ValueTy *getValPtr() const {
487 void setValPtr(ValueTy *P) { setRawValPtr(GetAsValue(P)); }
492 PoisoningVH(ValueTy *P) : CallbackVH(GetAsValue(P)) {}
512 operator ValueTy *() const { return getValPtr(); }
514 ValueTy *operator->() const { return getValPtr(); }
515 ValueTy &operator*() const { return *getValPtr(); }
include/llvm/Support/Casting.h 34 using SimpleType = From; // The real type this represents...
37 static SimpleType &getSimplifiedValue(From &Val) { return Val; }
41 using NonConstSimpleType = typename simplify_type<From>::SimpleType;
47 static RetType getSimplifiedValue(const From& Val) {
57 static inline bool doit(const From &Val) {
58 return To::classof(&Val);
76 static inline bool doit(const From &Val) {
77 return isa_impl<To, From>::doit(Val);
77 return isa_impl<To, From>::doit(Val);
92 return isa_impl<To, From>::doit(*Val);
104 static inline bool doit(const From *Val) {
106 return isa_impl<To, From>::doit(*Val);
106 return isa_impl<To, From>::doit(*Val);
122 return isa_impl_wrap<To, SimpleFrom,
132 return isa_impl_cl<To,FromTy>::doit(Val);
141 template <class X, class Y> LLVM_NODISCARD inline bool isa(const Y &Val) {
142 return isa_impl_wrap<X, const Y,
142 return isa_impl_wrap<X, const Y,
143 typename simplify_type<const Y>::SimpleType>::doit(Val);
172 using ret_type = To *; // Pointer arg case, return Ty*
176 using ret_type = const To *; // Constant pointer arg case, return const Ty*
198 using ret_type = typename cast_retty<To, SimpleFrom>::ret_type;
204 using ret_type = typename cast_retty_impl<To,FromTy>::ret_type;
210 To, From, typename simplify_type<From>::SimpleType>::ret_type;
218 static typename cast_retty<To, From>::ret_type doit(From &Val) {
219 return cast_convert_val<To, SimpleFrom,
227 static typename cast_retty<To, FromTy>::ret_type doit(const FromTy &Val) {
228 typename cast_retty<To, FromTy>::ret_type Res2
248 typename cast_retty<X, const Y>::ret_type>::type
256 inline typename cast_retty<X, Y>::ret_type cast(Y &Val) {
258 return cast_convert_val<X, Y,
263 inline typename cast_retty<X, Y *>::ret_type cast(Y *Val) {
263 inline typename cast_retty<X, Y *>::ret_type cast(Y *Val) {
263 inline typename cast_retty<X, Y *>::ret_type cast(Y *Val) {
265 return cast_convert_val<X, Y*,
265 return cast_convert_val<X, Y*,
266 typename simplify_type<Y*>::SimpleType>::doit(Val);
331 typename cast_retty<X, const Y>::ret_type>::type
337 LLVM_NODISCARD inline typename cast_retty<X, Y>::ret_type dyn_cast(Y &Val) {
338 return isa<X>(Val) ? cast<X>(Val) : nullptr;
338 return isa<X>(Val) ? cast<X>(Val) : nullptr;
342 LLVM_NODISCARD inline typename cast_retty<X, Y *>::ret_type dyn_cast(Y *Val) {
342 LLVM_NODISCARD inline typename cast_retty<X, Y *>::ret_type dyn_cast(Y *Val) {
342 LLVM_NODISCARD inline typename cast_retty<X, Y *>::ret_type dyn_cast(Y *Val) {
343 return isa<X>(Val) ? cast<X>(Val) : nullptr;
343 return isa<X>(Val) ? cast<X>(Val) : nullptr;
366 LLVM_NODISCARD inline typename cast_retty<X, Y *>::ret_type
368 return (Val && isa<X>(Val)) ? cast<X>(Val) : nullptr;
368 return (Val && isa<X>(Val)) ? cast<X>(Val) : nullptr;
include/llvm/Support/type_traits.h 55 struct add_const_past_pointer { using type = const T; };
include/llvm/Transforms/Utils/CallPromotionUtils.h 39 CastInst **RetBitCast = nullptr);
include/llvm/Transforms/Utils/SimplifyIndVar.h 43 virtual void visitCast(CastInst *Cast) = 0;
lib/Analysis/BasicAliasAnalysis.cpp 377 Value *CastOp = cast<CastInst>(V)->getOperand(0);
lib/Analysis/CFLGraph.h 282 void visitCastInst(CastInst &Inst) {
lib/Analysis/ConstantFolding.cpp 342 if (CastInst::castIsValid(Cast, C, DestTy))
781 NewIdxs.push_back(ConstantExpr::getCast(CastInst::getCastOpcode(Ops[i],
lib/Analysis/IVDescriptors.cpp 172 if (auto *Cast = dyn_cast<CastInst>(Val))
172 if (auto *Cast = dyn_cast<CastInst>(Val))
lib/Analysis/InlineCost.cpp 271 bool visitCastInst(CastInst &I);
714 bool CallAnalyzer::visitCastInst(CastInst &I) {
lib/Analysis/InstructionSimplify.cpp 1797 auto *Cast0 = dyn_cast<CastInst>(Op0);
1797 auto *Cast0 = dyn_cast<CastInst>(Op0);
1798 auto *Cast1 = dyn_cast<CastInst>(Op1);
1798 auto *Cast1 = dyn_cast<CastInst>(Op1);
3244 if (isa<CastInst>(LHS) && (isa<Constant>(RHS) || isa<CastInst>(RHS))) {
3244 if (isa<CastInst>(LHS) && (isa<Constant>(RHS) || isa<CastInst>(RHS))) {
3245 Instruction *LI = cast<CastInst>(LHS);
3286 Constant *RExt = ConstantExpr::getCast(CastInst::ZExt, Trunc, DstTy);
3345 Constant *RExt = ConstantExpr::getCast(CastInst::SExt, Trunc, DstTy);
4281 if (auto *CI = dyn_cast<CastInst>(Op)) {
4281 if (auto *CI = dyn_cast<CastInst>(Op)) {
4295 if (CastInst::isEliminableCastPair(FirstOp, SecondOp, SrcTy, MidTy, DstTy,
lib/Analysis/LazyValueInfo.cpp 431 bool solveBlockValueCast(ValueLatticeElement &BBLV, CastInst *CI,
648 if (auto *CI = dyn_cast<CastInst>(BBI))
648 if (auto *CI = dyn_cast<CastInst>(BBI))
1016 CastInst *CI,
1341 return isa<CastInst>(Usr) || isa<BinaryOperator>(Usr);
1354 if (auto *CI = dyn_cast<CastInst>(Usr)) {
1354 if (auto *CI = dyn_cast<CastInst>(Usr)) {
lib/Analysis/Lint.cpp 693 } else if (CastInst *CI = dyn_cast<CastInst>(V)) {
693 } else if (CastInst *CI = dyn_cast<CastInst>(V)) {
704 if (CastInst::isNoopCast(Instruction::CastOps(CE->getOpcode()),
lib/Analysis/Loads.cpp 187 if (isa<BinaryOperator>(A) || isa<CastInst>(A) || isa<PHINode>(A) ||
416 CastInst::isBitOrNoopPointerCastable(LI->getType(), AccessTy, DL)) {
434 CastInst::isBitOrNoopPointerCastable(SI->getValueOperand()->getType(),
lib/Analysis/LoopAccessAnalysis.cpp 138 if (auto *CI = dyn_cast<CastInst>(V))
138 if (auto *CI = dyn_cast<CastInst>(V))
lib/Analysis/LoopUnrollAnalyzer.cpp 143 bool UnrolledInstAnalyzer::visitCastInst(CastInst &I) {
154 if (COp && CastInst::castIsValid(I.getOpcode(), COp, I.getType())) {
lib/Analysis/PHITransAddr.cpp 30 if (isa<CastInst>(Inst) &&
187 if (CastInst *Cast = dyn_cast<CastInst>(Inst)) {
187 if (CastInst *Cast = dyn_cast<CastInst>(Inst)) {
204 if (CastInst *CastI = dyn_cast<CastInst>(U))
204 if (CastInst *CastI = dyn_cast<CastInst>(U))
380 if (CastInst *Cast = dyn_cast<CastInst>(Inst)) {
380 if (CastInst *Cast = dyn_cast<CastInst>(Inst)) {
387 CastInst *New = CastInst::Create(Cast->getOpcode(), OpVal, InVal->getType(),
387 CastInst *New = CastInst::Create(Cast->getOpcode(), OpVal, InVal->getType(),
lib/Analysis/ScalarEvolution.cpp 7713 isa<SelectInst>(I) || isa<CastInst>(I) || isa<GetElementPtrInst>(I) ||
8237 C = ConstantExpr::getCast(CastInst::getCastOpcode(C, false,
lib/Analysis/ScalarEvolutionExpander.cpp 56 if (CastInst *CI = dyn_cast<CastInst>(U))
56 if (CastInst *CI = dyn_cast<CastInst>(U))
64 Ret = CastInst::Create(Op, V, Ty, "", &*IP);
75 Ret = CastInst::Create(Op, V, Ty, V->getName(), &*IP);
110 Instruction::CastOps Op = CastInst::getCastOpcode(V, false, Ty, false);
122 if (CastInst *CI = dyn_cast<CastInst>(V)) {
122 if (CastInst *CI = dyn_cast<CastInst>(V)) {
130 if (CastInst *CI = dyn_cast<CastInst>(V))
130 if (CastInst *CI = dyn_cast<CastInst>(V))
899 (isa<CastInst>(IncV) && !isa<BitCastInst>(IncV)))
lib/Analysis/ValueTracking.cpp 4960 auto *Cast1 = dyn_cast<CastInst>(V1);
4960 auto *Cast1 = dyn_cast<CastInst>(V1);
4966 if (auto *Cast2 = dyn_cast<CastInst>(V2)) {
4966 if (auto *Cast2 = dyn_cast<CastInst>(V2)) {
5092 cast<CastInst>(TrueVal)->getOperand(0), C,
5101 C, cast<CastInst>(FalseVal)->getOperand(0),
lib/Analysis/VectorUtils.cpp 172 CastInst *CI = dyn_cast<CastInst>(U);
172 CastInst *CI = dyn_cast<CastInst>(U);
lib/AsmParser/LLParser.cpp 3329 if (!CastInst::castIsValid((Instruction::CastOps)Opc, SrcVal, DestTy))
6553 if (!CastInst::castIsValid((Instruction::CastOps)Opc, Op, DestTy)) {
6554 CastInst::castIsValid((Instruction::CastOps)Opc, Op, DestTy);
6559 Inst = CastInst::Create((Instruction::CastOps)Opc, Op, DestTy);
lib/Bitcode/Reader/BitcodeReader.cpp 3943 if (!CastInst::castIsValid(CastOp, Op, ResTy))
3945 I = CastInst::Create(CastOp, Op, ResTy);
lib/CodeGen/CodeGenPrepare.cpp 1072 static bool SinkCast(CastInst *CI) {
1076 DenseMap<BasicBlock*, CastInst*> InsertedCasts;
1109 CastInst *&InsertedCast = InsertedCasts[UserBB];
1114 InsertedCast = CastInst::Create(CI->getOpcode(), CI->getOperand(0),
1140 static bool OptimizeNoopCopyExpression(CastInst *CI, const TargetLowering &TLI,
1526 DenseMap<BasicBlock *, CastInst *> InsertedTruncs;
1563 CastInst *&InsertedTrunc = InsertedTruncs[TruncUserBB];
1582 InsertedTrunc = CastInst::Create(TruncI->getOpcode(), InsertedShift,
4184 (BaseI && !isa<CastInst>(BaseI) &&
6254 auto *ExtInst = CastInst::Create(ExtType, Cond, NewType);
6254 auto *ExtInst = CastInst::Create(ExtType, Cond, NewType);
6942 if (CastInst *CI = dyn_cast<CastInst>(I)) {
6942 if (CastInst *CI = dyn_cast<CastInst>(I)) {
lib/CodeGen/IndirectBrExpandPass.cpp 180 return CastInst::CreatePointerCast(
lib/CodeGen/InterleavedLoadCombinePass.cpp 969 if (isa<CastInst>(&Ptr)) {
970 CastInst &CI = *cast<CastInst>(&Ptr);
970 CastInst &CI = *cast<CastInst>(&Ptr);
lib/CodeGen/SelectionDAG/FastISel.cpp 337 if (const auto *Cast = dyn_cast<CastInst>(I))
337 if (const auto *Cast = dyn_cast<CastInst>(I))
lib/IR/AsmWriter.cpp 3997 } else if (isa<CastInst>(I)) {
lib/IR/AutoUpgrade.cpp 3779 Temp = CastInst::Create(Instruction::PtrToInt, V, MidTy);
3781 return CastInst::Create(Instruction::IntToPtr, Temp, DestTy);
3883 !CastInst::castIsValid(Instruction::BitCast, CI,
3897 if (!CastInst::castIsValid(Instruction::BitCast, Arg,
lib/IR/ConstantFold.cpp 97 return CastInst::isEliminableCastPair(firstOp, secondOp, SrcTy, MidTy, DstTy,
398 C = ConstantExpr::getCast(CastInst::getCastOpcode(C, false,
413 C = ConstantExpr::getCast(CastInst::getCastOpcode(C, false,
462 C = ConstantExpr::getCast(CastInst::getCastOpcode(C, false,
475 Constant *N = ConstantExpr::getCast(CastInst::getCastOpcode(FieldNo, false,
499 Constant *N = ConstantExpr::getCast(CastInst::getCastOpcode(FieldNo,
515 C = ConstantExpr::getCast(CastInst::getCastOpcode(C, false,
654 Idx = ConstantExpr::getCast(CastInst::getCastOpcode(Idx, true,
lib/IR/Constants.cpp 3003 return CastInst::Create((Instruction::CastOps)getOpcode(),
lib/IR/Instructions.cpp 539 ArraySize = CastInst::CreateIntegerCast(ArraySize, IntPtrTy, false,
542 ArraySize = CastInst::CreateIntegerCast(ArraySize, IntPtrTy, false,
2747 CastInst *CastInst::Create(Instruction::CastOps op, Value *S, Type *Ty,
2769 CastInst *CastInst::Create(Instruction::CastOps op, Value *S, Type *Ty,
2791 CastInst *CastInst::CreateZExtOrBitCast(Value *S, Type *Ty,
2799 CastInst *CastInst::CreateZExtOrBitCast(Value *S, Type *Ty,
2807 CastInst *CastInst::CreateSExtOrBitCast(Value *S, Type *Ty,
2815 CastInst *CastInst::CreateSExtOrBitCast(Value *S, Type *Ty,
2823 CastInst *CastInst::CreateTruncOrBitCast(Value *S, Type *Ty,
2831 CastInst *CastInst::CreateTruncOrBitCast(Value *S, Type *Ty,
2839 CastInst *CastInst::CreatePointerCast(Value *S, Type *Ty,
2857 CastInst *CastInst::CreatePointerCast(Value *S, Type *Ty,
2874 CastInst *CastInst::CreatePointerBitCastOrAddrSpaceCast(
2887 CastInst *CastInst::CreatePointerBitCastOrAddrSpaceCast(
2900 CastInst *CastInst::CreateBitOrPointerCast(Value *S, Type *Ty,
2911 CastInst *CastInst::CreateIntegerCast(Value *C, Type *Ty,
2925 CastInst *CastInst::CreateIntegerCast(Value *C, Type *Ty,
2939 CastInst *CastInst::CreateFPCast(Value *C, Type *Ty,
2952 CastInst *CastInst::CreateFPCast(Value *C, Type *Ty,
lib/IR/SafepointIRVerifier.cpp 340 if (const auto *CI = dyn_cast<CastInst>(V)) {
340 if (const auto *CI = dyn_cast<CastInst>(V)) {
lib/Target/AArch64/AArch64TargetTransformInfo.cpp 236 auto *Extend = cast<CastInst>(Args[1]);
280 if (auto *Cast = dyn_cast<CastInst>(SingleUser->getOperand(1)))
280 if (auto *Cast = dyn_cast<CastInst>(SingleUser->getOperand(1)))
282 cast<CastInst>(I)->getSrcTy() == Cast->getSrcTy())
lib/Target/Hexagon/HexagonTargetTransformInfo.cpp 314 if (const CastInst *CI = dyn_cast<const CastInst>(U))
314 if (const CastInst *CI = dyn_cast<const CastInst>(U))
lib/Target/PowerPC/PPCTargetTransformInfo.cpp 438 CastInst *CI = cast<CastInst>(J);
438 CastInst *CI = cast<CastInst>(J);
lib/Target/WebAssembly/WebAssemblyFixFunctionBitcasts.cpp 150 if (CastInst::isBitOrNoopPointerCastable(ArgType, ParamType, DL)) {
152 CastInst::CreateBitOrPointerCast(AI, ParamType, "cast");
189 } else if (CastInst::isBitOrNoopPointerCastable(ExpectedRtnType, RtnType,
192 CastInst::CreateBitOrPointerCast(Call, RtnType, "cast");
lib/Transforms/Coroutines/CoroFrame.cpp 942 return isa<CastInst>(&V) || isa<GetElementPtrInst>(&V) ||
lib/Transforms/Coroutines/Coroutines.cpp 413 if (CastInst::isBitCastable(SrcTy, *RI)) {
lib/Transforms/IPO/GlobalOpt.cpp 714 } else if (CastInst *CI = dyn_cast<CastInst>(I)) {
714 } else if (CastInst *CI = dyn_cast<CastInst>(I)) {
lib/Transforms/InstCombine/InstCombineAddSub.cpp 923 return CastInst::Create(Instruction::SExt, X, Ty);
1736 return CastInst::CreateSExtOrBitCast(X, I.getType());
1743 return CastInst::CreateZExtOrBitCast(X, I.getType());
lib/Transforms/InstCombine/InstCombineAndOrXor.cpp 1479 bool InstCombiner::shouldOptimizeCast(CastInst *CI) {
1488 if (const auto *PrecedingCI = dyn_cast<CastInst>(CastSrc))
1488 if (const auto *PrecedingCI = dyn_cast<CastInst>(CastSrc))
1496 static Instruction *foldLogicCastConstant(BinaryOperator &Logic, CastInst *Cast,
1540 CastInst *Cast0 = dyn_cast<CastInst>(Op0);
1540 CastInst *Cast0 = dyn_cast<CastInst>(Op0);
1554 CastInst *Cast1 = dyn_cast<CastInst>(Op1);
1554 CastInst *Cast1 = dyn_cast<CastInst>(Op1);
1571 return CastInst::Create(CastOpcode, NewOp, DestTy);
1586 return CastInst::Create(CastOpcode, Res, DestTy);
1596 return CastInst::Create(CastOpcode, R, DestTy);
lib/Transforms/InstCombine/InstCombineCalls.cpp 1731 return CastInst::Create(*Action.CastOp, II->getArgOperand(0), II->getType(),
3211 return CastInst::Create(Instruction::BitCast, Result, CI.getType());
3289 return CastInst::CreateIntegerCast(Arg0, II->getType(),
4091 const CastInst *const CI,
4367 CastInst *CI = dyn_cast<CastInst>(*I);
4367 CastInst *CI = dyn_cast<CastInst>(*I);
4442 if (!CastInst::isBitOrNoopPointerCastable(NewRetTy, OldRetTy, DL)) {
4495 if (!CastInst::isBitOrNoopPointerCastable(ActTy, ParamTy, DL))
4603 CastInst::getCastOpcode(*AI, false, PTy, false);
4654 NV = NC = CastInst::CreateBitOrPointerCast(NC, OldRetTy);
lib/Transforms/InstCombine/InstCombineCasts.cpp 203 Res = CastInst::CreateIntegerCast(I->getOperand(0), Ty,
232 Instruction::CastOps InstCombiner::isEliminableCastPair(const CastInst *CI1,
233 const CastInst *CI2) {
246 unsigned Res = CastInst::isEliminableCastPair(firstOp, secondOp, SrcTy, MidTy,
260 Instruction *InstCombiner::commonCastTransforms(CastInst &CI) {
264 if (auto *CSrc = dyn_cast<CastInst>(Src)) { // A->B->C cast
264 if (auto *CSrc = dyn_cast<CastInst>(Src)) { // A->B->C cast
269 auto *Res = CastInst::Create(NewOpc, CSrc->getOperand(0), Ty);
269 auto *Res = CastInst::Create(NewOpc, CSrc->getOperand(0), Ty);
657 static Instruction *shrinkInsertElt(CastInst &Trunc,
777 return CastInst::CreateIntegerCast(Shift, DestTy, false);
807 return CastInst::CreateIntegerCast(Shift, CI.getType(), true);
1297 return CastInst::CreateIntegerCast(In, CI.getType(), true/*SExt*/);
1376 return CastInst::Create(Instruction::ZExt, Src, DestTy);
1615 return CastInst::CreateFPCast(ExactResult, Ty);
1679 Instruction *InstCombiner::visitFPExt(CastInst &CI) {
1749 Instruction *InstCombiner::visitUIToFP(CastInst &CI) {
1753 Instruction *InstCombiner::visitSIToFP(CastInst &CI) {
1779 Instruction *InstCombiner::commonPointerCastTransforms(CastInst &CI) {
1819 return CastInst::CreateIntegerCast(P, Ty, /*isSigned=*/false);
2146 static bool hasStoreUsersOnly(CastInst &CI) {
2162 Instruction *InstCombiner::optimizeBitCastFromPhi(CastInst &CI, PHINode *PN) {
2374 CastInst *SrcCast = cast<CastInst>(Src);
2374 CastInst *SrcCast = cast<CastInst>(Src);
2398 return CastInst::Create(Instruction::BitCast, Elem, DestTy);
lib/Transforms/InstCombine/InstCombineCompares.cpp 554 auto *CI = dyn_cast<CastInst>(V);
554 auto *CI = dyn_cast<CastInst>(V);
677 if (auto *CI = dyn_cast<CastInst>(Val)) {
677 if (auto *CI = dyn_cast<CastInst>(Val)) {
4301 auto *CastOp0 = cast<CastInst>(ICmp.getOperand(0));
4301 auto *CastOp0 = cast<CastInst>(ICmp.getOperand(0));
4308 if (auto *CastOp1 = dyn_cast<CastInst>(ICmp.getOperand(1))) {
4308 if (auto *CastOp1 = dyn_cast<CastInst>(ICmp.getOperand(1))) {
4392 auto *CastOp0 = dyn_cast<CastInst>(ICmp.getOperand(0));
4392 auto *CastOp0 = dyn_cast<CastInst>(ICmp.getOperand(0));
4395 if (!isa<Constant>(ICmp.getOperand(1)) && !isa<CastInst>(ICmp.getOperand(1)))
lib/Transforms/InstCombine/InstCombineInternal.h 85 if (isa<CastInst>(V) || match(V, m_Neg(m_Value())) ||
407 Instruction *commonCastTransforms(CastInst &CI);
408 Instruction *commonPointerCastTransforms(CastInst &CI);
413 Instruction *visitFPExt(CastInst &CI);
416 Instruction *visitUIToFP(CastInst &CI);
417 Instruction *visitSIToFP(CastInst &CI);
484 bool shouldOptimizeCast(CastInst *CI);
603 Instruction *optimizeBitCastFromPhi(CastInst &CI, PHINode *PN);
616 Instruction::CastOps isEliminableCastPair(const CastInst *CI1,
617 const CastInst *CI2);
lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp 620 if (auto* CI = dyn_cast<CastInst>(LI.user_back()))
620 if (auto* CI = dyn_cast<CastInst>(LI.user_back()))
1299 isa<CastInst>(A) ||
lib/Transforms/InstCombine/InstCombineMulDivRem.cpp 988 return CastInst::CreateZExtOrBitCast(Cmp, Ty);
993 return CastInst::CreateZExtOrBitCast(Cmp, Ty);
1372 return CastInst::CreateZExtOrBitCast(Builder.CreateICmpNE(Op1, Op0), Ty);
lib/Transforms/InstCombine/InstCombinePHI.cpp 208 return CastInst::CreateBitOrPointerCast(MatchingPtrPHI,
260 CI = CastInst::CreateBitOrPointerCast(IncomingVal, IntToPtr->getType(),
277 return CastInst::CreateBitOrPointerCast(NewPtrPHI,
718 return CastInst::CreateZExtOrBitCast(NewPhi, Phi.getType());
745 if (isa<CastInst>(FirstInst)) {
806 if (CastInst *FirstCI = dyn_cast<CastInst>(FirstInst)) {
806 if (CastInst *FirstCI = dyn_cast<CastInst>(FirstInst)) {
807 CastInst *NewCI = CastInst::Create(FirstCI->getOpcode(), PhiVal,
807 CastInst *NewCI = CastInst::Create(FirstCI->getOpcode(), PhiVal,
lib/Transforms/InstCombine/InstCombineSelect.cpp 332 return CastInst::Create(Instruction::CastOps(TI->getOpcode()), NewSI,
1773 return CastInst::Create(Instruction::CastOps(ExtOpcode), NewSel, SelType);
1902 return CastInst::CreateBitOrPointerCast(NewSel, Sel.getType());
2076 return CastInst::Create(Instruction::SExt, Sat, Ty);
lib/Transforms/InstCombine/InstCombineShifts.cpp 135 Ret = CastInst::Create(Instruction::Trunc, NewShift, Sh0->getType());
lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp 415 CastInst *NewCast = new ZExtInst(I->getOperand(0), VTy, I->getName());
lib/Transforms/InstCombine/InstCombineVectorOps.cpp 429 } else if (auto *CI = dyn_cast<CastInst>(I)) {
429 } else if (auto *CI = dyn_cast<CastInst>(I)) {
436 return CastInst::Create(CI->getOpcode(), EE, EI.getType());
1274 return CastInst::Create(cast<CastInst>(I)->getOpcode(), NewOps[0], DestTy,
1274 return CastInst::Create(cast<CastInst>(I)->getOpcode(), NewOps[0], DestTy,
lib/Transforms/InstCombine/InstructionCombining.cpp 256 auto *Cast = dyn_cast<CastInst>(BinOp1->getOperand(0));
256 auto *Cast = dyn_cast<CastInst>(BinOp1->getOperand(0));
829 if (auto *Cast = dyn_cast<CastInst>(&I))
829 if (auto *Cast = dyn_cast<CastInst>(&I))
1052 CastInst *CI = cast<CastInst>(&I);
1052 CastInst *CI = cast<CastInst>(&I);
1295 if (CastInst *Cast = dyn_cast<CastInst>(Op)) {
1295 if (CastInst *Cast = dyn_cast<CastInst>(Op)) {
1581 CastInst::CastOps CastOpc = IsSext ? Instruction::SExt : Instruction::ZExt;
1615 return CastInst::Create(CastOpc, NarrowBO, BO.getType());
1944 return CastInst::Create(Instruction::IntToPtr, NewSub, GEPType);
1951 return CastInst::CreatePointerBitCastOrAddrSpaceCast(Y, GEPType);
2048 return CastInst::CreatePointerBitCastOrAddrSpaceCast(NewGEP, GEPType);
2084 return CastInst::CreatePointerBitCastOrAddrSpaceCast(NewGEP,
2127 return CastInst::CreatePointerBitCastOrAddrSpaceCast(NewGEP,
2473 auto *Cast = dyn_cast<CastInst>(&Inst);
3171 if (!isa<CastInst>(I))
lib/Transforms/Instrumentation/ControlHeightReduction.cpp 496 return isa<BinaryOperator>(I) || isa<CastInst>(I) || isa<SelectInst>(I) ||
lib/Transforms/Instrumentation/DataFlowSanitizer.cpp 442 void visitCastInst(CastInst &CI);
1410 void DFSanVisitor::visitCastInst(CastInst &CI) { visitOperandShadowInst(CI); }
lib/Transforms/Instrumentation/MemorySanitizer.cpp 1927 void visitFPToSIInst(CastInst& I) { handleShadowOr(I); }
1928 void visitFPToUIInst(CastInst& I) { handleShadowOr(I); }
1929 void visitSIToFPInst(CastInst& I) { handleShadowOr(I); }
1930 void visitUIToFPInst(CastInst& I) { handleShadowOr(I); }
1931 void visitFPExtInst(CastInst& I) { handleShadowOr(I); }
1932 void visitFPTruncInst(CastInst& I) { handleShadowOr(I); }
lib/Transforms/Instrumentation/SanitizerCoverage.cpp 764 C = ConstantExpr::getCast(CastInst::ZExt, It.getCaseValue(), Int64Ty);
lib/Transforms/Scalar/CorrelatedValuePropagation.cpp 731 auto *ZExt =
732 CastInst::CreateZExtOrBitCast(Base, SDI->getType(), SDI->getName(), SDI);
lib/Transforms/Scalar/EarlyCSE.cpp 111 return isa<CastInst>(Inst) || isa<UnaryOperator>(Inst) ||
230 if (CastInst *CI = dyn_cast<CastInst>(Inst))
230 if (CastInst *CI = dyn_cast<CastInst>(Inst))
lib/Transforms/Scalar/IndVarSimplify.cpp 894 static void visitIVCast(CastInst *Cast, WideIVInfo &WI, ScalarEvolution *SE,
1953 void visitCast(CastInst *Cast) override { visitIVCast(Cast, WI, SE, TTI); }
lib/Transforms/Scalar/InferAddressSpaces.cpp 991 NewV = CastInst::Create(Instruction::BitCast, NewV,
lib/Transforms/Scalar/JumpThreading.cpp 670 if (CastInst *CI = dyn_cast<CastInst>(I)) {
670 if (CastInst *CI = dyn_cast<CastInst>(I)) {
1335 AvailableVal = CastInst::CreateBitOrPointerCast(
1511 PredV = CastInst::CreateBitOrPointerCast(PredV, LoadI->getType(), "",
lib/Transforms/Scalar/LICM.cpp 1036 isa<FenceInst>(I) || isa<CastInst>(I) ||
lib/Transforms/Scalar/LoopStrengthReduce.cpp 5276 CastInst::Create(CastInst::getCastOpcode(ICmpScaledV, false,
5276 CastInst::Create(CastInst::getCastOpcode(ICmpScaledV, false,
5291 C = ConstantExpr::getCast(CastInst::getCastOpcode(C, false,
5368 CastInst::Create(CastInst::getCastOpcode(FullV, false,
5368 CastInst::Create(CastInst::getCastOpcode(FullV, false,
5435 CastInst::Create(CastInst::getCastOpcode(FullV, false, OpTy, false),
5435 CastInst::Create(CastInst::getCastOpcode(FullV, false, OpTy, false),
lib/Transforms/Scalar/MemCpyOptimizer.cpp 886 : CastInst::CreatePointerCast(cpyDest, cpySrc->getType(),
892 CS.setArgument(i, CastInst::CreatePointerCast(Dest,
lib/Transforms/Scalar/NewGVN.cpp 1171 } else if (auto *CI = dyn_cast<CastInst>(I)) {
1171 } else if (auto *CI = dyn_cast<CastInst>(I)) {
lib/Transforms/Scalar/Reg2Mem.cpp 85 CastInst *AllocaInsertionPoint = new BitCastInst(
lib/Transforms/Scalar/RewriteStatepointsForGC.cpp 519 if (CastInst *CI = dyn_cast<CastInst>(I)) {
519 if (CastInst *CI = dyn_cast<CastInst>(I)) {
1941 if (CastInst *CI = dyn_cast<CastInst>(CurrentValue)) {
1941 if (CastInst *CI = dyn_cast<CastInst>(CurrentValue)) {
1963 if (CastInst *CI = dyn_cast<CastInst>(Instr)) {
1963 if (CastInst *CI = dyn_cast<CastInst>(Instr)) {
lib/Transforms/Scalar/SCCP.cpp 616 void visitCastInst(CastInst &I);
872 void SCCPSolver::visitCastInst(CastInst &I) {
lib/Transforms/Scalar/Scalarizer.cpp 191 bool visitCastInst(CastInst &CI);
644 bool ScalarizerVisitor::visitCastInst(CastInst &CI) {
lib/Transforms/Scalar/SeparateConstOffsetFromGEP.cpp 332 SmallVector<CastInst *, 16> ExtInsts;
656 if (CastInst *Cast = dyn_cast<CastInst>(U)) {
656 if (CastInst *Cast = dyn_cast<CastInst>(U)) {
772 *I = CastInst::CreateIntegerCast(*I, IntPtrTy, true, "idxprom", GEP);
lib/Transforms/Utils/CallPromotionUtils.cpp 161 static void createRetBitCast(CallSite CS, Type *RetTy, CastInst **RetBitCast) {
179 auto *Cast = CastInst::CreateBitOrPointerCast(CS.getInstruction(), RetTy, "",
179 auto *Cast = CastInst::CreateBitOrPointerCast(CS.getInstruction(), RetTy, "",
330 if (!CastInst::isBitOrNoopPointerCastable(FuncRetTy, CallRetTy, DL)) {
355 if (!CastInst::isBitOrNoopPointerCastable(ActualTy, FormalTy, DL)) {
366 CastInst **RetBitCast) {
408 auto *Cast = CastInst::CreateBitOrPointerCast(Arg, FormalTy, "",
408 auto *Cast = CastInst::CreateBitOrPointerCast(Arg, FormalTy, "",
lib/Transforms/Utils/CodeExtractor.cpp 1033 CastInst::CreatePointerCast(Mem, Int8PtrTy, "lt.cast", TheCall);
lib/Transforms/Utils/Evaluator.cpp 410 } else if (CastInst *CI = dyn_cast<CastInst>(CurInst)) {
410 } else if (CastInst *CI = dyn_cast<CastInst>(CurInst)) {
lib/Transforms/Utils/Local.cpp 1670 if (auto *CI = dyn_cast<CastInst>(&I)) {
1670 if (auto *CI = dyn_cast<CastInst>(&I)) {
2869 auto *Trunc = CastInst::Create(Instruction::Trunc, Provider, DemandedTy,
2869 auto *Trunc = CastInst::Create(Instruction::Trunc, Provider, DemandedTy,
2876 auto *ExtInst = CastInst::Create(Instruction::ZExt, CI, ITy, "zext", I);
2876 auto *ExtInst = CastInst::Create(Instruction::ZExt, CI, ITy, "zext", I);
2969 if (CastInst *CI = dyn_cast<CastInst>(V))
2969 if (CastInst *CI = dyn_cast<CastInst>(V))
lib/Transforms/Utils/SimplifyIndVar.cpp 916 CastInst *Cast = dyn_cast<CastInst>(UseInst);
916 CastInst *Cast = dyn_cast<CastInst>(UseInst);
lib/Transforms/Vectorize/LoopVectorize.cpp 1160 Type *SrcTy = ToVectorTy(cast<CastInst>(I)->getSrcTy(), VF);
1161 Type *DestTy = ToVectorTy(cast<CastInst>(I)->getDestTy(), VF);
2595 CastInst::CreatePointerCast(TripCount, IdxTy, "exitcount.ptrcnt.to.int",
2659 if (CastInst::isBitOrNoopPointerCastable(SrcElemTy, DstElemTy, DL)) {
3019 CastInst::getCastOpcode(CountRoundDown, true, StepType, true);
3339 } else if (auto *CI = dyn_cast<CastInst>(I)) {
3339 } else if (auto *CI = dyn_cast<CastInst>(I)) {
4241 auto *CI = cast<CastInst>(&I);
4241 auto *CI = cast<CastInst>(&I);
lib/Transforms/Vectorize/SLPVectorizer.cpp 369 bool IsCastOp = isa<CastInst>(VL[BaseIndex]);
387 } else if (IsCastOp && isa<CastInst>(VL[Cnt])) {
3881 auto *CI = cast<CastInst>(VL0);
3881 auto *CI = cast<CastInst>(VL0);
4960 else if (isa<PHINode>(I) || isa<CastInst>(I) || isa<GetElementPtrInst>(I) ||
tools/bugpoint/Miscompilation.cpp 895 CastInst *CastedResolver = new BitCastInst(
tools/clang/lib/CodeGen/CGAtomic.cpp 1403 else if (llvm::CastInst::isBitCastable(IntVal->getType(), ValTy))
tools/lldb/source/Expression/IRInterpreter.cpp 878 const CastInst *cast_inst = dyn_cast<CastInst>(inst);
878 const CastInst *cast_inst = dyn_cast<CastInst>(inst);
903 const CastInst *cast_inst = dyn_cast<CastInst>(inst);
903 const CastInst *cast_inst = dyn_cast<CastInst>(inst);
tools/polly/lib/CodeGen/BlockGenerators.cpp 1168 const CastInst *Cast = dyn_cast<CastInst>(Inst);
1168 const CastInst *Cast = dyn_cast<CastInst>(Inst);
unittests/Analysis/CGSCCPassManagerTest.cpp 1172 (void)CastInst::CreatePointerCast(&H3F,
unittests/Analysis/ScalarEvolutionTest.cpp 180 CastInst *CastA =
181 CastInst::CreateBitOrPointerCast(Gep0, I8PtrTy, "bitcast1", Br);
189 CastInst *CastB =
190 CastInst::CreateBitOrPointerCast(Sel, I32PtrTy, "bitcast2", Br);
451 Instruction *Trunc = CastInst::CreateTruncOrBitCast(A1, Ty32, "", EntryBB);
unittests/IR/InstructionsTest.cpp 295 auto Inst1 = CastInst::CreatePointerCast(NullV2I32Ptr, V2Int32Ty, "foo", BB);
298 auto Inst2 = CastInst::CreatePointerCast(NullV2I32Ptr, V2Int32Ty);
326 CastInst *PtrVecA = new IntToPtrInst(C2xi32a, V2xi32PTy);
327 CastInst *PtrVecB = new IntToPtrInst(C2xi32b, V2xi32PTy);
343 CastInst *BTC0 = new BitCastInst(Gep0, V2xi8PTy);
344 CastInst *BTC1 = new BitCastInst(Gep1, V2xi8PTy);
345 CastInst *BTC2 = new BitCastInst(Gep2, V2xi8PTy);
346 CastInst *BTC3 = new BitCastInst(Gep3, V2xi8PTy);
unittests/IR/ValueHandleTest.cpp 122 AssertingVH<CastInst> AVH(BitcastV.get());
123 CastInst *implicit_to_exact_type = AVH;
138 const CastInst *ConstBitcast = BitcastV.get();
139 AssertingVH<const CastInst> AVH(ConstBitcast);
140 const CastInst *implicit_to_exact_type = AVH;
433 PoisoningVH<CastInst> VH(BitcastV.get());
434 CastInst *implicit_to_exact_type = VH;
449 const CastInst *ConstBitcast = BitcastV.get();
450 PoisoningVH<const CastInst> VH(ConstBitcast);
451 const CastInst *implicit_to_exact_type = VH;
usr/include/c++/7.4.0/type_traits 381 : public __is_pointer_helper<typename remove_cv<_Tp>::type>::type
1554 { typedef _Tp type; };
1558 { typedef _Tp type; };
1563 { typedef _Tp type; };
1574 remove_const<typename remove_volatile<_Tp>::type>::type type;
1983 { typedef _Up type; };