Lines Matching refs:IntRange

3413 struct IntRange {
3420 IntRange(unsigned Width, bool NonNegative)
3425 static IntRange forBoolType() {
3426 return IntRange(1, true);
3430 static IntRange forValueOfType(ASTContext &C, QualType T) {
3436 static IntRange forValueOfCanonicalType(ASTContext &C, const Type *T) {
3448 return IntRange(C.getIntWidth(QualType(T, 0)), false);
3453 return IntRange(std::max(NumPositive, NumNegative), NumNegative == 0);
3459 return IntRange(C.getIntWidth(QualType(T, 0)), BT->isUnsignedInteger());
3467 static IntRange forTargetOfCanonicalType(ASTContext &C, const Type *T) {
3480 return IntRange(C.getIntWidth(QualType(T, 0)), BT->isUnsignedInteger());
3484 static IntRange join(IntRange L, IntRange R) {
3485 return IntRange(std::max(L.Width, R.Width),
3490 static IntRange meet(IntRange L, IntRange R) {
3491 return IntRange(std::min(L.Width, R.Width),
3496 static IntRange GetValueRange(ASTContext &C, llvm::APSInt &value,
3499 return IntRange(value.getMinSignedBits(), false);
3506 return IntRange(value.getActiveBits(), true);
3509 static IntRange GetValueRange(ASTContext &C, APValue &result, QualType Ty,
3515 IntRange R = GetValueRange(C, result.getVectorElt(0), Ty, MaxWidth);
3517 IntRange El = GetValueRange(C, result.getVectorElt(i), Ty, MaxWidth);
3518 R = IntRange::join(R, El);
3524 IntRange R = GetValueRange(C, result.getComplexIntReal(), MaxWidth);
3525 IntRange I = GetValueRange(C, result.getComplexIntImag(), MaxWidth);
3526 return IntRange::join(R, I);
3535 return IntRange(MaxWidth, Ty->isUnsignedIntegerOrEnumerationType());
3542 static IntRange GetExprRange(ASTContext &C, Expr *E, unsigned MaxWidth) {
3557 IntRange OutputTypeRange = IntRange::forValueOfType(C, CE->getType());
3565 IntRange SubRange
3575 return IntRange(SubRange.Width,
3588 IntRange L = GetExprRange(C, CO->getTrueExpr(), MaxWidth);
3589 IntRange R = GetExprRange(C, CO->getFalseExpr(), MaxWidth);
3590 return IntRange::join(L, R);
3605 return IntRange::forBoolType();
3617 return IntRange::forValueOfType(C, E->getType());
3628 return IntRange::forValueOfType(C, E->getType());
3633 return IntRange::meet(GetExprRange(C, BO->getLHS(), MaxWidth),
3643 IntRange R = IntRange::forValueOfType(C, E->getType());
3644 return IntRange(R.Width, /*NonNegative*/ true);
3650 return IntRange::forValueOfType(C, E->getType());
3655 IntRange L = GetExprRange(C, BO->getLHS(), MaxWidth);
3679 return IntRange::forValueOfType(C, E->getType());
3687 IntRange L = GetExprRange(C, BO->getLHS(), opWidth);
3701 IntRange R = GetExprRange(C, BO->getRHS(), opWidth);
3702 return IntRange(L.Width, L.NonNegative && R.NonNegative);
3710 IntRange L = GetExprRange(C, BO->getLHS(), opWidth);
3711 IntRange R = GetExprRange(C, BO->getRHS(), opWidth);
3713 IntRange meet = IntRange::meet(L, R);
3728 IntRange L = GetExprRange(C, BO->getLHS(), MaxWidth);
3729 IntRange R = GetExprRange(C, BO->getRHS(), MaxWidth);
3730 return IntRange::join(L, R);
3737 return IntRange::forBoolType();
3742 return IntRange::forValueOfType(C, E->getType());
3750 IntRange::forValueOfType(C, E->getType());
3754 return IntRange(BitField->getBitWidthValue(C),
3757 return IntRange::forValueOfType(C, E->getType());
3760 static IntRange GetExprRange(ASTContext &C, Expr *E) {
3901 IntRange signedRange = GetExprRange(S.Context, signedOperand);
3920 IntRange unsignedRange = GetExprRange(S.Context, unsignedOperand);
4051 std::string PrettyPrintInRange(const llvm::APSInt &Value, IntRange Range) {
4212 IntRange SourceRange = GetExprRange(S.Context, E);
4213 IntRange TargetRange = IntRange::forTargetOfCanonicalType(S.Context, Target);