Home | History | Annotate | Download | only in Sema

Lines Matching defs:IntRange

6970 struct IntRange {
6977 IntRange(unsigned Width, bool NonNegative)
6982 static IntRange forBoolType() {
6983 return IntRange(1, true);
6987 static IntRange forValueOfType(ASTContext &C, QualType T) {
6993 static IntRange forValueOfCanonicalType(ASTContext &C, const Type *T) {
7007 return IntRange(C.getIntWidth(QualType(T, 0)), false);
7013 return IntRange(NumPositive, true/*NonNegative*/);
7015 return IntRange(std::max(NumPositive + 1, NumNegative),
7022 return IntRange(C.getIntWidth(QualType(T, 0)), BT->isUnsignedInteger());
7030 static IntRange forTargetOfCanonicalType(ASTContext &C, const Type *T) {
7045 return IntRange(C.getIntWidth(QualType(T, 0)), BT->isUnsignedInteger());
7049 static IntRange join(IntRange L, IntRange R) {
7050 return IntRange(std::max(L.Width, R.Width),
7055 static IntRange meet(IntRange L, IntRange R) {
7056 return IntRange(std::min(L.Width, R.Width),
7061 IntRange GetValueRange(ASTContext &C, llvm::APSInt &value, unsigned MaxWidth) {
7063 return IntRange(value.getMinSignedBits(), false);
7070 return IntRange(value.getActiveBits(), true);
7073 IntRange GetValueRange(ASTContext &C, APValue &result, QualType Ty,
7079 IntRange R = GetValueRange(C, result.getVectorElt(0), Ty, MaxWidth);
7081 IntRange El = GetValueRange(C, result.getVectorElt(i), Ty, MaxWidth);
7082 R = IntRange::join(R, El);
7088 IntRange R = GetValueRange(C, result.getComplexIntReal(), MaxWidth);
7089 IntRange I = GetValueRange(C, result.getComplexIntImag(), MaxWidth);
7090 return IntRange::join(R, I);
7099 return IntRange(MaxWidth, Ty->isUnsignedIntegerOrEnumerationType());
7113 IntRange GetExprRange(ASTContext &C, const Expr *E, unsigned MaxWidth) {
7128 IntRange OutputTypeRange = IntRange::forValueOfType(C, GetExprType(CE));
7137 IntRange SubRange
7147 return IntRange(SubRange.Width,
7160 IntRange L = GetExprRange(C, CO->getTrueExpr(), MaxWidth);
7161 IntRange R = GetExprRange(C, CO->getFalseExpr(), MaxWidth);
7162 return IntRange::join(L, R);
7177 return IntRange::forBoolType();
7189 return IntRange::forValueOfType(C, GetExprType(E));
7200 return IntRange::forValueOfType(C, GetExprType(E));
7205 return IntRange::meet(GetExprRange(C, BO->getLHS(), MaxWidth),
7215 IntRange R = IntRange::forValueOfType(C, GetExprType(E));
7216 return IntRange(R.Width, /*NonNegative*/ true);
7222 return IntRange::forValueOfType(C, GetExprType(E));
7227 IntRange L = GetExprRange(C, BO->getLHS(), MaxWidth);
7251 return IntRange::forValueOfType(C, GetExprType(E));
7259 IntRange
7273 IntRange R = GetExprRange(C, BO->getRHS(), opWidth);
7274 return IntRange(L.Width, L.NonNegative && R.NonNegative);
7282 IntRange L = GetExprRange(C, BO->getLHS(), opWidth);
7283 IntRange R = GetExprRange(C, BO->getRHS(), opWidth);
7285 IntRange meet = IntRange::meet(L, R);
7300 IntRange L = GetExprRange(C, BO->getLHS(), MaxWidth);
7301 IntRange R = GetExprRange(C, BO->getRHS(), MaxWidth);
7302 return IntRange::join(L, R);
7309 return IntRange::forBoolType();
7314 return IntRange::forValueOfType(C, GetExprType(E));
7325 return IntRange(BitField->getBitWidthValue(C),
7328 return IntRange::forValueOfType(C, GetExprType(E));
7331 IntRange GetExprRange(ASTContext &C, const Expr *E) {
7442 IntRange OtherRange = IntRange::forValueOfType(S.Context, OtherT);
7711 IntRange signedRange = GetExprRange(S.Context, signedOperand);
7730 IntRange unsignedRange = GetExprRange(S.Context, unsignedOperand);
7937 std::string PrettyPrintInRange(const llvm::APSInt &Value, IntRange Range) {
8313 IntRange SourceRange = GetExprRange(S.Context, E);
8314 IntRange TargetRange = IntRange::forTargetOfCanonicalType(S.Context, Target);