LLVM: lib/Analysis/OverflowInstAnalysis.cpp Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13

17

18using namespace llvm;

20

25 int XIdx;

27

29 return false;

30

31

32

33 auto matchMulOverflowCheck = [X, &II, &XIdx](Value *V) {

35

36 if (!Extract || !Extract->getIndices().equals(1))

37 return false;

38

40 if (II ||

43 return false;

44

45 if (II->getArgOperand(0) == X)

46 XIdx = 0;

47 else if (II->getArgOperand(1) == X)

48 XIdx = 1;

49 else

50 return false;

51 return true;

52 };

53

54 bool Matched =

56 matchMulOverflowCheck(Op1)) ||

58 match(Op1, m_Not(m_Value(NotOp1))) && matchMulOverflowCheck(NotOp1));

59

60 if (!Matched)

61 return false;

62

63 Y = &II->getArgOperandUse(!XIdx);

64 return true;

65}

66

uint64_t IntrinsicInst * II

static TableGen::Emitter::Opt Y("gen-skeleton-entry", EmitSkeleton, "Generate example skeleton entry")

static TableGen::Emitter::OptClass< SkeletonEmitter > X("gen-skeleton-class", "Generate example skeleton class")

An abstraction over a floating-point predicate, and a pack of an integer predicate with samesign info...

A wrapper class for inspecting calls to intrinsic functions.

A Use represents the edge between a Value definition and its users.

LLVM Value Representation.

BinaryOp_match< SrcTy, SpecificConstantMatch, TargetOpcode::G_XOR, true > m_Not(const SrcTy &&Src)

Matches a register not-ed by a G_XOR.

bool match(Val *V, const Pattern &P)

IntrinsicID_match m_Intrinsic()

Match intrinsic calls like this: m_IntrinsicIntrinsic::fabs(m_Value(X))

class_match< Value > m_Value()

Match an arbitrary value and ignore it.

CmpClass_match< LHS, RHS, ICmpInst > m_ICmp(CmpPredicate &Pred, const LHS &L, const RHS &R)

is_zero m_Zero()

Match any null constant or a vector with all elements equal to 0.

match_combine_or< LTy, RTy > m_CombineOr(const LTy &L, const RTy &R)

Combine two pattern matchers matching L || R.

This is an optimization pass for GlobalISel generic memory operations.

decltype(auto) dyn_cast(const From &Val)

dyn_cast - Return the argument parameter cast to the specified type.

bool isCheckForZeroAndMulWithOverflow(Value *Op0, Value *Op1, bool IsAnd, Use *&Y)

Match one of the patterns up to the select/logic op: Op0 = icmp ne i4 X, 0 Agg = call { i4,...

Definition OverflowInstAnalysis.cpp:21