@@ -423,18 +423,20 @@ ExprIntPairTy BoundsAnalysis::SplitIntoBaseOffset(const Expr *E) {
423
423
llvm::APSInt Zero (Ctx.getTypeSize (Ctx.IntTy ), 0 );
424
424
425
425
if (!E)
426
- return std::make_pair (nullptr , Zero);;
426
+ return std::make_pair (nullptr , Zero);
427
+
428
+ E = E->IgnoreParens ();
427
429
428
430
if (IsDeclOperand (E))
429
431
return std::make_pair (GetDeclOperand (E), Zero);
430
432
431
433
if (!isa<BinaryOperator>(E))
432
- return std::make_pair (nullptr , Zero);;
434
+ return std::make_pair (nullptr , Zero);
433
435
434
436
const BinaryOperator *BO = dyn_cast<BinaryOperator>(E);
435
437
// TODO: Currently we only handle exprs containing additive operations.
436
438
if (BO->getOpcode () != BO_Add)
437
- return std::make_pair (nullptr , Zero);;
439
+ return std::make_pair (nullptr , Zero);
438
440
439
441
Expr *LHS = BO->getLHS ()->IgnoreParens ();
440
442
Expr *RHS = BO->getRHS ()->IgnoreParens ();
@@ -472,7 +474,7 @@ ExprIntPairTy BoundsAnalysis::SplitIntoBaseOffset(const Expr *E) {
472
474
// was a BinaryOperator, or because the RHS was a BinaryOperator and was
473
475
// swapped with the LHS.
474
476
if (!isa<BinaryOperator>(LHS))
475
- return std::make_pair (nullptr , Zero);;
477
+ return std::make_pair (nullptr , Zero);
476
478
477
479
// If we reach here, the expr is one of these:
478
480
// Case 4: (p + q) + i
@@ -878,25 +880,26 @@ OrderedBlocksTy BoundsAnalysis::GetOrderedBlocks() {
878
880
}
879
881
880
882
void BoundsAnalysis::DumpWidenedBounds (FunctionDecl *FD) {
881
- llvm::outs () << " --------------------------------------\n " ;
882
- llvm::outs () << " In function: " << FD->getName () << " \n " ;
883
+ OS << " --------------------------------------\n " ;
884
+ OS << " In function: " << FD->getName () << " \n " ;
883
885
884
886
for (const CFGBlock *B : GetOrderedBlocks ()) {
885
- llvm::outs () << " --------------------------------------" ;
886
- B->print (llvm::outs () , Cfg, S.getLangOpts (), /* ShowColors */ true );
887
+ OS << " --------------------------------------" ;
888
+ B->print (OS , Cfg, S.getLangOpts (), /* ShowColors */ true );
887
889
888
890
BoundsMapTy Vars = GetWidenedBounds (B);
889
891
using VarPairTy = std::pair<const VarDecl *, unsigned >;
890
892
891
- std::sort (Vars.begin (), Vars.end (), [](VarPairTy A, VarPairTy B) {
892
- return A.first ->getQualifiedNameAsString ().compare (
893
- B.first ->getQualifiedNameAsString ()) < 0 ;
894
- });
893
+ llvm::sort (Vars.begin (), Vars.end (),
894
+ [](VarPairTy A, VarPairTy B) {
895
+ return A.first ->getQualifiedNameAsString ().compare (
896
+ B.first ->getQualifiedNameAsString ()) < 0 ;
897
+ });
895
898
896
899
for (auto item : Vars) {
897
- llvm::outs () << " upper_bound("
898
- << item.first ->getQualifiedNameAsString () << " ) = "
899
- << item.second << " \n " ;
900
+ OS << " upper_bound("
901
+ << item.first ->getQualifiedNameAsString () << " ) = "
902
+ << item.second << " \n " ;
900
903
}
901
904
}
902
905
}
0 commit comments