Lines Matching refs:IntRange

10175 struct IntRange {
10182 IntRange(unsigned Width, bool NonNegative)
10186 static IntRange forBoolType() {
10187 return IntRange(1, true);
10191 static IntRange forValueOfType(ASTContext &C, QualType T) {
10197 static IntRange forValueOfCanonicalType(ASTContext &C, const Type *T) {
10217 return IntRange(C.getIntWidth(QualType(T, 0)),
10225 return IntRange(NumPositive, true/*NonNegative*/);
10227 return IntRange(std::max(NumPositive + 1, NumNegative),
10234 return IntRange(C.getIntWidth(QualType(T, 0)), BT->isUnsignedInteger());
10242 static IntRange forTargetOfCanonicalType(ASTContext &C, const Type *T) {
10257 return IntRange(C.getIntWidth(QualType(T, 0)), BT->isUnsignedInteger());
10261 static IntRange join(IntRange L, IntRange R) {
10262 return IntRange(std::max(L.Width, R.Width),
10267 static IntRange meet(IntRange L, IntRange R) {
10268 return IntRange(std::min(L.Width, R.Width),
10275 static IntRange GetValueRange(ASTContext &C, llvm::APSInt &value,
10278 return IntRange(value.getMinSignedBits(), false);
10285 return IntRange(value.getActiveBits(), true);
10288 static IntRange GetValueRange(ASTContext &C, APValue &result, QualType Ty,
10294 IntRange R = GetValueRange(C, result.getVectorElt(0), Ty, MaxWidth);
10296 IntRange El = GetValueRange(C, result.getVectorElt(i), Ty, MaxWidth);
10297 R = IntRange::join(R, El);
10303 IntRange R = GetValueRange(C, result.getComplexIntReal(), MaxWidth);
10304 IntRange I = GetValueRange(C, result.getComplexIntImag(), MaxWidth);
10305 return IntRange::join(R, I);
10314 return IntRange(MaxWidth, Ty->isUnsignedIntegerOrEnumerationType());
10328 static IntRange GetExprRange(ASTContext &C, const Expr *E, unsigned MaxWidth,
10344 IntRange OutputTypeRange = IntRange::forValueOfType(C, GetExprType(CE));
10353 IntRange SubRange = GetExprRange(C, CE->getSubExpr(),
10363 return IntRange(SubRange.Width,
10376 IntRange L =
10378 IntRange R =
10380 return IntRange::join(L, R);
10397 return IntRange::forBoolType();
10409 return IntRange::forValueOfType(C, GetExprType(E));
10420 return IntRange::forValueOfType(C, GetExprType(E));
10425 return IntRange::meet(
10436 IntRange R = IntRange::forValueOfType(C, GetExprType(E));
10437 return IntRange(R.Width, /*NonNegative*/ true);
10443 return IntRange::forValueOfType(C, GetExprType(E));
10448 IntRange L = GetExprRange(C, BO->getLHS(), MaxWidth, InConstantContext);
10472 return IntRange::forValueOfType(C, GetExprType(E));
10480 IntRange L = GetExprRange(C, BO->getLHS(), opWidth, InConstantContext);
10494 IntRange R = GetExprRange(C, BO->getRHS(), opWidth, InConstantContext);
10495 return IntRange(L.Width, L.NonNegative && R.NonNegative);
10503 IntRange L = GetExprRange(C, BO->getLHS(), opWidth, InConstantContext);
10504 IntRange R = GetExprRange(C, BO->getRHS(), opWidth, InConstantContext);
10506 IntRange meet = IntRange::meet(L, R);
10521 IntRange L = GetExprRange(C, BO->getLHS(), MaxWidth, InConstantContext);
10522 IntRange R = GetExprRange(C, BO->getRHS(), MaxWidth, InConstantContext);
10523 return IntRange::join(L, R);
10530 return IntRange::forBoolType();
10535 return IntRange::forValueOfType(C, GetExprType(E));
10546 return IntRange(BitField->getBitWidthValue(C),
10549 return IntRange::forValueOfType(C, GetExprType(E));
10552 static IntRange GetExprRange(ASTContext &C, const Expr *E,
10642 PromotedRange(IntRange R, unsigned BitWidth, bool Unsigned) {
10804 IntRange OtherRange = IntRange::forValueOfType(S.Context, OtherT);
10817 OtherRange = IntRange::forBoolType();
10978 IntRange signedRange =
10996 IntRange unsignedRange =
11368 IntRange Range) {
11880 IntRange SourceRange = GetExprRange(S.Context, E, S.isConstantEvaluated());
11945 IntRange SourceRange = GetExprRange(S.Context, E, S.isConstantEvaluated());
11946 IntRange TargetRange = IntRange::forTargetOfCanonicalType(S.Context, Target);