diff options
-rw-r--r-- | lib/AST/ASTContext.cpp | 7 | ||||
-rw-r--r-- | lib/AST/Expr.cpp | 10 | ||||
-rw-r--r-- | lib/CodeGen/CodeGenTypes.cpp | 7 | ||||
-rw-r--r-- | lib/Sema/SemaStmt.cpp | 6 |
4 files changed, 8 insertions, 22 deletions
diff --git a/lib/AST/ASTContext.cpp b/lib/AST/ASTContext.cpp index 643d475325..7ff4ae9165 100644 --- a/lib/AST/ASTContext.cpp +++ b/lib/AST/ASTContext.cpp @@ -370,11 +370,8 @@ void ASTRecordLayout::LayoutField(const FieldDecl *FD, unsigned FieldNo, if (const Expr *BitWidthExpr = FD->getBitWidth()) { // TODO: Need to check this algorithm on other targets! // (tested on Linux-X86) - llvm::APSInt I(32); - bool BitWidthIsICE = - BitWidthExpr->isIntegerConstantExpr(I, Context); - assert (BitWidthIsICE && "Invalid BitField size expression"); - FieldSize = I.getZExtValue(); + FieldSize = + BitWidthExpr->getIntegerConstantExprValue(Context).getZExtValue(); std::pair<uint64_t, unsigned> FieldInfo = Context.getTypeInfo(FD->getType()); diff --git a/lib/AST/Expr.cpp b/lib/AST/Expr.cpp index 5fc7cf25f3..e78c3599f6 100644 --- a/lib/AST/Expr.cpp +++ b/lib/AST/Expr.cpp @@ -1195,10 +1195,7 @@ ObjCMessageExpr::ClassInfo ObjCMessageExpr::getClassInfo() const { } bool ChooseExpr::isConditionTrue(ASTContext &C) const { - llvm::APSInt CondVal(32); - bool IsConst = getCond()->isIntegerConstantExpr(CondVal, C); - assert(IsConst && "Condition of choose expr must be i-c-e"); IsConst=IsConst; - return CondVal != 0; + return getCond()->getIntegerConstantExprValue(C) != 0; } static int64_t evaluateOffsetOf(ASTContext& C, const Expr *E) @@ -1220,12 +1217,9 @@ static int64_t evaluateOffsetOf(ASTContext& C, const Expr *E) return RL.getFieldOffset(i) + evaluateOffsetOf(C, ME->getBase()); } else if (const ArraySubscriptExpr *ASE = dyn_cast<ArraySubscriptExpr>(E)) { const Expr *Base = ASE->getBase(); - llvm::APSInt Idx(32); - bool ICE = ASE->getIdx()->isIntegerConstantExpr(Idx, C); - assert(ICE && "Array index is not a constant integer!"); int64_t size = C.getTypeSize(ASE->getType()); - size *= Idx.getSExtValue(); + size *= ASE->getIdx()->getIntegerConstantExprValue(C).getSExtValue(); return size + evaluateOffsetOf(C, Base); } else if (isa<CompoundLiteralExpr>(E)) diff --git a/lib/CodeGen/CodeGenTypes.cpp b/lib/CodeGen/CodeGenTypes.cpp index 2d5bd12f92..5b291d4616 100644 --- a/lib/CodeGen/CodeGenTypes.cpp +++ b/lib/CodeGen/CodeGenTypes.cpp @@ -553,11 +553,8 @@ void RecordOrganizer::layoutUnionFields(const ASTRecordLayout &RL) { if (FD->isBitField()) { Expr *BitWidth = FD->getBitWidth(); - llvm::APSInt FieldSize(32); - bool isBitField = - BitWidth->isIntegerConstantExpr(FieldSize, CGT.getContext()); - assert (isBitField && "Invalid BitField size expression"); - uint64_t BitFieldSize = FieldSize.getZExtValue(); + uint64_t BitFieldSize = + BitWidth->getIntegerConstantExprValue(CGT.getContext()).getZExtValue(); CGT.addFieldInfo(FD, 0); CGT.addBitFieldInfo(FD, offset, BitFieldSize); diff --git a/lib/Sema/SemaStmt.cpp b/lib/Sema/SemaStmt.cpp index c6215daf53..abc7f8865a 100644 --- a/lib/Sema/SemaStmt.cpp +++ b/lib/Sema/SemaStmt.cpp @@ -347,9 +347,8 @@ Sema::ActOnFinishSwitchStmt(SourceLocation SwitchLoc, StmtTy *Switch, // We already verified that the expression has a i-c-e value (C99 // 6.8.4.2p3) - get that value now. - llvm::APSInt LoVal(32); Expr *Lo = CS->getLHS(); - Lo->isIntegerConstantExpr(LoVal, Context); + llvm::APSInt LoVal = Lo->getIntegerConstantExprValue(Context); // Convert the value to the same width/sign as the condition. ConvertIntegerToTypeWarnOnOverflow(LoVal, CondWidth, CondIsSigned, @@ -398,9 +397,8 @@ Sema::ActOnFinishSwitchStmt(SourceLocation SwitchLoc, StmtTy *Switch, std::vector<llvm::APSInt> HiVals; for (unsigned i = 0, e = CaseRanges.size(); i != e; ++i) { CaseStmt *CR = CaseRanges[i].second; - llvm::APSInt HiVal(32); Expr *Hi = CR->getRHS(); - Hi->isIntegerConstantExpr(HiVal, Context); + llvm::APSInt HiVal = Hi->getIntegerConstantExprValue(Context); // Convert the value to the same width/sign as the condition. ConvertIntegerToTypeWarnOnOverflow(HiVal, CondWidth, CondIsSigned, |