diff options
| author | bloodstalker <thabogre@gmail.com> | 2017-02-15 00:42:04 +0000 | 
|---|---|---|
| committer | bloodstalker <thabogre@gmail.com> | 2017-02-15 00:42:04 +0000 | 
| commit | 58af6640fd89dd0b33ebb00ec1256ed8dd7c48ef (patch) | |
| tree | c9bb5a01e96d2f58c9febef50da358a38addc685 | |
| parent | added a macro function to check for the validity of sourcelocations we get (diff) | |
| download | mutator-58af6640fd89dd0b33ebb00ec1256ed8dd7c48ef.tar.gz mutator-58af6640fd89dd0b33ebb00ec1256ed8dd7c48ef.zip  | |
Now all sourcelocations are checked for validity before being touched
Diffstat (limited to '')
| -rw-r--r-- | mutator-lvl0.cpp | 299 | 
1 files changed, 206 insertions, 93 deletions
diff --git a/mutator-lvl0.cpp b/mutator-lvl0.cpp index 6324c83..6d1d49d 100644 --- a/mutator-lvl0.cpp +++ b/mutator-lvl0.cpp @@ -274,6 +274,7 @@ public:        const IfStmt *IS = MR.Nodes.getNodeAs<clang::IfStmt>("mcelse");        SourceLocation SL = IS->getLocStart(); +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -311,6 +312,7 @@ public:        const IfStmt *IS = MR.Nodes.getNodeAs<clang::IfStmt>("mcif");        SourceLocation SL = IS->getLocStart(); +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -349,8 +351,9 @@ public:        const IfStmt *ElseIf = MR.Nodes.getNodeAs<clang::IfStmt>("mcifelse");        SourceLocation IFESL = ElseIf->getLocStart(); +      CheckSLValidity(IFESL);        IFESL = Devi::SourceLocationHasMacro(IFESL, Rewrite, "start"); - +              if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, IFESL))        {          return void(); @@ -388,6 +391,7 @@ public:        const SwitchStmt *SS = MR.Nodes.getNodeAs<clang::SwitchStmt>("mcswitchbrk");        SourceLocation SL = SS->getLocStart(); +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -426,6 +430,7 @@ public:        const SwitchStmt *SS = MR.Nodes.getNodeAs<clang::SwitchStmt>("mcswitchdft");        SourceLocation SL = SS->getLocStart(); +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -466,6 +471,7 @@ public:        const CaseStmt *SS = MR.Nodes.getNodeAs<clang::CaseStmt>("mccase151");        SourceLocation SL = SS->getLocStart(); +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -518,6 +524,7 @@ public:        const SwitchStmt *SS = MR.Nodes.getNodeAs<clang::SwitchStmt>("mcswitch155");        SourceLocation SL = SS->getLocStart(); +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -557,7 +564,8 @@ public:        if (FD->isVariadic())        { -        SourceLocation SL = FD->getLocStart(); +        SourceLocation SL = FD->getLocStart();  +        CheckSLValidity(SL);          SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");          if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -597,7 +605,8 @@ public:        const FunctionDecl *FD = MR.Nodes.getNodeAs<clang::FunctionDecl>("mc162funcdec");        const CallExpr *CE = MR.Nodes.getNodeAs<clang::CallExpr>("mc162callexpr"); -      SourceLocation SL = FD->getLocStart(); +      SourceLocation SL = FD->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -665,7 +674,8 @@ public:        /*to guard against function that have a declaration that is not a definition only.*/        if (FDcl != nullptr)        { -        SourceLocation SL = FD->getLocStart(); +        SourceLocation SL = FD->getLocStart();  +        CheckSLValidity(SL);          SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");          if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -739,7 +749,8 @@ public:      {        const CallExpr *CE = MR.Nodes.getNodeAs<clang::CallExpr>("mcfunc166"); -      SourceLocation SL = CE->getLocStart(); +      SourceLocation SL = CE->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        const FunctionDecl *FD = CE->getDirectCallee(); @@ -879,7 +890,8 @@ public:        const Expr *RE [[maybe_unused]] = RT->getRetValue(); -      SourceLocation SL = RT->getLocStart(); +      SourceLocation SL = RT->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -926,7 +938,8 @@ public:      {        const ImplicitCastExpr* ICE = MR.Nodes.getNodeAs<clang::ImplicitCastExpr>("mcfunc169"); -      SourceLocation SL = ICE->getLocStart(); +      SourceLocation SL = ICE->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -1005,7 +1018,8 @@ public:        const RecordDecl *RD = MR.Nodes.getNodeAs<clang::RecordDecl>("mcsu184"); -      SourceLocation SL = RD->getLocStart(); +      SourceLocation SL = RD->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        ASTContext* const ASTC = MR.Context; @@ -1066,7 +1080,8 @@ public:        const RecordDecl* RD = MR.Nodes.getNodeAs<clang::RecordDecl>("mcsu181struct"); -      SourceLocation SL = RD->getLocStart(); +      SourceLocation SL = RD->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        ASTContext* const ASTC = MR.Context; @@ -1196,7 +1211,8 @@ public:      {        const FieldDecl *FD = MR.Nodes.getNodeAs<clang::FieldDecl>("mctype6465"); -      SourceLocation SL = FD->getLocStart(); +      SourceLocation SL = FD->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        QualType QT = FD->getType(); @@ -1274,7 +1290,8 @@ public:        DeclarationNameInfo DNI = FD->getNameInfo();        std::string MatchedName = DNI.getAsString(); -      SourceLocation SL = FD->getLocStart(); +      SourceLocation SL = FD->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        SourceLocation SLE = FD->getLocEnd(); @@ -1499,7 +1516,8 @@ public:      {        const VarDecl* VD = MR.Nodes.getNodeAs<clang::VarDecl>("mcinit91"); -      SourceLocation SL = VD->getLocStart(); +      SourceLocation SL = VD->getLocStart();  +      CheckSLValidity(SL);        SourceLocation SLMID;        if (SL.isMacroID()) @@ -1508,6 +1526,7 @@ public:        }        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start"); +        SourceLocation SLE = VD->getLocEnd();        SourceLocation SLEMID; @@ -1597,8 +1616,12 @@ public:            /*JANKY*/            const Expr* InitExpr [[maybe_unused]] = VD->getInit();            SourceRange InitExprSR; -          SourceLocation IESL = InitExpr->getLocStart(); +          SourceLocation IESL = InitExpr->getLocStart();  +          CheckSLValidity(IESL);            IESL = Devi::SourceLocationHasMacro(IESL, Rewrite, "start"); +       +          CheckSLValidity(IESL); +            SourceLocation IESLE = InitExpr->getLocEnd();            IESLE = Devi::SourceLocationHasMacro(IESLE, Rewrite, "end");            InitExprSR.setBegin(IESL); @@ -1674,7 +1697,8 @@ public:        const InitListExpr* ILE = MR.Nodes.getNodeAs<clang::InitListExpr>("mcinit92");        const VarDecl* VD = MR.Nodes.getNodeAs<clang::VarDecl>("mcinit92daddy"); -      SourceLocation SL = VD->getLocStart(); +      SourceLocation SL = VD->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -1714,7 +1738,8 @@ public:        it tells us we could not match an integer initialization for this enumconstantdecl.*/        const IntegerLiteral* IL = MR.Nodes.getNodeAs<clang::IntegerLiteral>("mcinit93kiddy"); -      SourceLocation SL = ED->getLocStart(); +      SourceLocation SL = ED->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        newSourceLocation = SL; @@ -1834,6 +1859,7 @@ public:        const Expr* EXP = MR.Nodes.getNodeAs<clang::Expr>("mcexpr123kiddy");        SourceLocation SL = EXP->getLocStart(); +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -1874,7 +1900,8 @@ public:      {        const Expr* EXP = MR.Nodes.getNodeAs<clang::Expr>("mcexpr124"); -      SourceLocation SL = EXP->getLocStart(); +      SourceLocation SL = EXP->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -1916,7 +1943,8 @@ public:      {        const Expr* EXP = MR.Nodes.getNodeAs<clang::Expr>("lrhs"); -      SourceLocation SL = EXP->getLocStart(); +      SourceLocation SL = EXP->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        ASTContext *const ASTC [[maybe_unused]] = MR.Context; @@ -1982,7 +2010,8 @@ public:      {        const Expr* EXP = MR.Nodes.getNodeAs<clang::Expr>("mcexpr126rl"); -      SourceLocation SL = EXP->getLocStart(); +      SourceLocation SL = EXP->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -2021,7 +2050,8 @@ public:      {        const Expr* EXP = MR.Nodes.getNodeAs<clang::Expr>("mcexpr127rl"); -      SourceLocation SL = EXP->getLocStart(); +      SourceLocation SL = EXP->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -2065,7 +2095,8 @@ public:        const Expr* RHS = MR.Nodes.getNodeAs<clang::Expr>("mcexpr128rhs");        const Expr* LHS = MR.Nodes.getNodeAs<clang::Expr>("mcexpr128lhs"); -      SourceLocation SL = RHS->getLocStart(); +      SourceLocation SL = RHS->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -2122,7 +2153,8 @@ public:      {        const Expr* EXP = MR.Nodes.getNodeAs<clang::Expr>("mcexpr129"); -      SourceLocation SL = EXP->getLocStart(); +      SourceLocation SL = EXP->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -2165,7 +2197,8 @@ public:      {        const Expr* EXP = MR.Nodes.getNodeAs<clang::Expr>("mcexpr1210"); -      SourceLocation SL = EXP->getLocStart(); +      SourceLocation SL = EXP->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -2201,7 +2234,8 @@ public:      {        const UnaryOperator* UO = MR.Nodes.getNodeAs<clang::UnaryOperator>("mcexpr1213"); -      SourceLocation SL = UO->getOperatorLoc(); +      SourceLocation SL = UO->getOperatorLoc();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -2237,7 +2271,8 @@ public:      {        const Expr* EXP = MR.Nodes.getNodeAs<clang::Expr>("cse131rlhs"); -      SourceLocation SL = EXP->getLocStart(); +      SourceLocation SL = EXP->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -2276,7 +2311,8 @@ public:      {        const Expr* EXP = MR.Nodes.getNodeAs<clang::Expr>("mccse132"); -      SourceLocation SL = EXP->getLocStart(); +      SourceLocation SL = EXP->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -2316,11 +2352,13 @@ public:        const Expr* EXP = MR.Nodes.getNodeAs<clang::Expr>("mccse1332rl");        const BinaryOperator* BO = MR.Nodes.getNodeAs<clang::BinaryOperator>("mccse1332daddy"); -      SourceLocation SLD = BO->getLocStart(); +      SourceLocation SLD = BO->getLocStart();  +      CheckSLValidity(SLD);        SLD = Devi::SourceLocationHasMacro(SLD, Rewrite, "start");        NewSL = SLD; -      SourceLocation SL = EXP->getLocStart(); +      SourceLocation SL = EXP->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        QualType QT = EXP->getType(); @@ -2373,7 +2411,8 @@ public:        const ForStmt* FS = MR.Nodes.getNodeAs<clang::ForStmt>("mccse134"); -      SourceLocation SL = FS->getLocStart(); +      SourceLocation SL = FS->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        const Expr* FSCond = FS->getCond(); @@ -2472,7 +2511,8 @@ public:        /*underdev*/        if (FSCond != nullptr)        { -        SourceLocation CSL = FSCond->getLocStart(); +        SourceLocation CSL = FSCond->getLocStart();  +        CheckSLValidity(CSL);          SourceLocation CSLE = FSCond->getLocEnd();          SourceRange CSR;          CSR.setBegin(CSL); @@ -2486,9 +2526,11 @@ public:        } -      SourceLocation SLD = FS->getLocStart(); +      SourceLocation SLD = FS->getLocStart();  +      CheckSLValidity(SLD);        SLD = Devi::SourceLocationHasMacro(SLD, Rewrite, "start"); -      SourceLocation SL = DRE->getLocStart(); +      SourceLocation SL = DRE->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (FSInit != nullptr && FSInc != nullptr) @@ -2551,7 +2593,8 @@ public:      {        const GotoStmt* GS = MR.Nodes.getNodeAs<clang::GotoStmt>("mccf144"); -      SourceLocation SL = GS->getLocStart(); +      SourceLocation SL = GS->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -2587,7 +2630,8 @@ public:      {        const ContinueStmt* CS = MR.Nodes.getNodeAs<clang::ContinueStmt>("mccf145"); -      SourceLocation SL = CS->getLocStart(); +      SourceLocation SL = CS->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -2623,7 +2667,8 @@ public:      {        const ForStmt* FS =  MR.Nodes.getNodeAs<clang::ForStmt>("mccffofo"); -      SL = FS->getLocStart(); +      SL = FS->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");      } @@ -2631,7 +2676,8 @@ public:      {        const WhileStmt* WS =  MR.Nodes.getNodeAs<clang::WhileStmt>("mccfwuwu"); -      SL = WS->getLocStart(); +      SL = WS->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");      } @@ -2639,7 +2685,8 @@ public:      {        const DoStmt* DS =  MR.Nodes.getNodeAs<clang::DoStmt>("mccfdodo"); -      SL = DS->getLocStart(); +      SL = DS->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");      } @@ -2700,7 +2747,8 @@ public:      {        const FunctionDecl* FD = MR.Nodes.getNodeAs<clang::FunctionDecl>("mccf147"); -      SourceLocation SL = FD->getLocStart(); +      SourceLocation SL = FD->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        NewSL = SL; @@ -2761,7 +2809,8 @@ public:      {        const ForStmt* FS = MR.Nodes.getNodeAs<clang::ForStmt>("mccf148for"); -      SL = FS->getLocStart(); +      SL = FS->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -2785,7 +2834,8 @@ public:      {        const WhileStmt* WS = MR.Nodes.getNodeAs<clang::WhileStmt>("mccf148while"); -      SL = WS->getLocStart(); +      SL = WS->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -2809,7 +2859,8 @@ public:      {        const DoStmt* DS = MR.Nodes.getNodeAs<clang::DoStmt>("mccf148do"); -      SL = DS->getLocStart(); +      SL = DS->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -2833,7 +2884,8 @@ public:      {        const SwitchStmt* SS = MR.Nodes.getNodeAs<clang::SwitchStmt>("mccf148switch"); -      SL = SS->getLocStart(); +      SL = SS->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -2869,7 +2921,8 @@ public:    {      const Expr* EXP = MR.Nodes.getNodeAs<clang::Expr>("mcswitch154"); -    SourceLocation SL = EXP->getLocStart(); +    SourceLocation SL = EXP->getLocStart();  +      CheckSLValidity(SL);      SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");      if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -2908,7 +2961,8 @@ public:      {        const ImplicitCastExpr* ICE = MR.Nodes.getNodeAs<clang::ImplicitCastExpr>("mcptc111"); -      SourceLocation SL = ICE->getLocStart(); +      SourceLocation SL = ICE->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        QualType QT = ICE->getType(); @@ -3042,7 +3096,8 @@ public:      {        const Expr* EXP = MR.Nodes.getNodeAs<clang::Expr>("mccse137"); -      SourceLocation SL = EXP->getLocStart(); +      SourceLocation SL = EXP->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        ASTContext *const ASTC = MR.Context; @@ -3125,11 +3180,16 @@ public:          FDDef = CE->getDirectCallee();        } -      SourceLocation CESL = CE->getLocStart(); +      SourceLocation CESL = CE->getLocStart();  +      CheckSLValidity(CESL);        CESL = Devi::SourceLocationHasMacro(CESL, Rewrite, "start"); -      SourceLocation FDDadSL = FDDad->getLocStart(); + +      SourceLocation FDDadSL = FDDad->getLocStart();  +      CheckSLValidity(FDDadSL);        FDDadSL = Devi::SourceLocationHasMacro(FDDadSL, Rewrite, "start"); -      SourceLocation FDSL = FDDef->getLocStart(); + +      SourceLocation FDSL = FDDef->getLocStart();  +      CheckSLValidity(FDSL);        FDSL = Devi::SourceLocationHasMacro(FDSL, Rewrite, "start");        ASTContext *const ASTC = MR.Context; @@ -3233,7 +3293,8 @@ public:      {        const FunctionDecl* FD = MR.Nodes.getNodeAs<clang::FunctionDecl>("mcfunction165"); -      SourceLocation SL = FD->getLocStart(); +      SourceLocation SL = FD->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -3269,9 +3330,11 @@ public:      {        const FunctionDecl* FD = MR.Nodes.getNodeAs<clang::FunctionDecl>("mcfunction1652"); -      SourceLocation SL = FD->getLocStart(); +      SourceLocation SL = FD->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start"); -      SourceLocation SLE = FD->getBody()->getLocStart(); +      SourceLocation SLE = FD->getBody()->getLocStart();  +      CheckSLValidity(SLE);        SLE = Devi::SourceLocationHasMacro(SLE, Rewrite, "end");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -3325,7 +3388,8 @@ public:      {        const DeclRefExpr* DRE = MR.Nodes.getNodeAs<clang::DeclRefExpr>("mcpointer171") ; -      SourceLocation SL = DRE->getLocStart(); +      SourceLocation SL = DRE->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -3371,7 +3435,8 @@ public:        const DeclRefExpr* DREL = MR.Nodes.getNodeAs<clang::DeclRefExpr>("mcpointer1723lhs");        const BinaryOperator* BO = MR.Nodes.getNodeAs<clang::BinaryOperator>("mcpointer1723daddy"); -      SourceLocation SL = BO->getLocStart(); +      SourceLocation SL = BO->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -3416,7 +3481,8 @@ public:      {        const CastExpr* CE = MR.Nodes.getNodeAs<clang::CastExpr>("mcpointer174"); -      SourceLocation SL = CE->getLocStart(); +      SourceLocation SL = CE->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -3440,7 +3506,8 @@ public:      {        const DeclRefExpr* DRE = MR.Nodes.getNodeAs<clang::DeclRefExpr>("mcpointer1742"); -      SourceLocation SL = DRE->getLocStart(); +      SourceLocation SL = DRE->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -3483,7 +3550,8 @@ public:      {        VD = MR.Nodes.getNodeAs<clang::VarDecl>("mcpointer175"); -      SL = VD->getLocStart(); +      SL = VD->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        QT = VD->getType(); @@ -3493,7 +3561,8 @@ public:      {        FD = MR.Nodes.getNodeAs<clang::FieldDecl>("mcpointer175field"); -      SL = FD->getSourceRange().getBegin(); +      SL = FD->getSourceRange().getBegin();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        QT = FD->getType(); @@ -3602,7 +3671,8 @@ public:        QualType QTEXP = EXP->getType();        const clang::Type* TPEXP = QTEXP.getTypePtr(); -      SourceLocation SL = EXP->getLocStart(); +      SourceLocation SL = EXP->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        SourceLocation SLE = EXP->getLocEnd();        SLE = Devi::SourceLocationHasMacro(SLE, Rewrite, "start"); @@ -3695,7 +3765,8 @@ public:      {        const VarDecl* VD = MR.Nodes.getNodeAs<clang::VarDecl>("mcsu181arr"); -      SourceLocation SL = VD->getLocStart(); +      SourceLocation SL = VD->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -3731,7 +3802,8 @@ public:      {        const CStyleCastExpr* CSCE = MR.Nodes.getNodeAs<clang::CStyleCastExpr>("mcptc11cstyle"); -      SourceLocation SL = CSCE->getLocStart(); +      SourceLocation SL = CSCE->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        QualType QT = CSCE->getType(); @@ -3847,7 +3919,8 @@ public:        if ((ICE->getCastKind() == CK_IntegralCast) || (ICE->getCastKind() == CK_FloatingCast) || \            (ICE->getCastKind() == CK_FloatingComplexCast) || (ICE->getCastKind() == CK_IntegralComplexCast))        { -        SourceLocation SL = ICE->getLocStart(); +        SourceLocation SL = ICE->getLocStart();  +        CheckSLValidity(SL);          SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");          ASTContext *const ASTC = MR.Context; @@ -4039,7 +4112,8 @@ public:        const IdentifierInfo *II = ND->getIdentifier(); -      SourceLocation SL = ND->getLocStart(); +      SourceLocation SL = ND->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        ASTContext *const ASTC = MR.Context; @@ -4104,7 +4178,8 @@ public:        std::string VDName = VD->getIdentifier()->getName().str(); -      SourceLocation SL = VD->getLocStart(); +      SourceLocation SL = VD->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        ASTContext* const ASTC = MR.Context; @@ -4201,7 +4276,8 @@ public:      {        const VarDecl* VD = MR.Nodes.getNodeAs<clang::VarDecl>("mcdcdf88var"); -      SourceLocation SL = VD->getLocStart(); +      SourceLocation SL = VD->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        ASTContext* const ASTC = MR.Context; @@ -4246,7 +4322,8 @@ public:      {        const FunctionDecl* FD = MR.Nodes.getNodeAs<clang::FunctionDecl>("mcdcdf88function"); -      SourceLocation SL = FD->getLocStart(); +      SourceLocation SL = FD->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        ASTContext* const ASTC = MR.Context; @@ -4335,7 +4412,9 @@ public:          //std::cout << "ZZZZZZZZZZZZZZZZZZZZZ" << RawText << std::endl; -        SourceLocation RCSL = iter->getLocStart(); +        SourceLocation RCSL = iter->getLocStart();  +        CheckSLValidity(RCSL); +        RCSL = Devi::SourceLocationHasMacro(RCSL, Rewrite, "start");          while (true)          { @@ -4403,7 +4482,8 @@ public:      {        const ParmVarDecl* PVD = MR.Nodes.getNodeAs<clang::ParmVarDecl>("mcfunction167"); -      SourceLocation SL = PVD->getLocStart(); +      SourceLocation SL = PVD->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -4469,7 +4549,8 @@ public:          RHSIsIntLit = true;        } -      SourceLocation SL = LHS->getLocStart(); +      SourceLocation SL = LHS->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -4531,7 +4612,8 @@ public:      {        const NullStmt* NS = MR.Nodes.getNodeAs<clang::NullStmt>("mccf143nullstmt"); -      SourceLocation SL = NS->getSemiLoc(); +      SourceLocation SL = NS->getSemiLoc();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        ASTContext *const ASTC = MR.Context; @@ -4563,7 +4645,8 @@ public:      {        const RecordDecl* RD = MR.Nodes.getNodeAs<clang::RecordDecl>("mcexpr1212"); -      SourceLocation SL = RD->getLocStart(); +      SourceLocation SL = RD->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -4597,7 +4680,8 @@ public:      {        const Expr* EXP = MR.Nodes.getNodeAs<clang::Expr>("mcexpr1211"); -      SourceLocation SL = EXP->getLocStart(); +      SourceLocation SL = EXP->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        SourceLocation SLE = EXP->getLocEnd(); @@ -4748,7 +4832,8 @@ public:          const BinaryOperator* BO = MR.Nodes.getNodeAs<clang::BinaryOperator>("mcatc105");          DynOpNode = ast_type_traits::DynTypedNode::create<clang::BinaryOperator>(*BO); -        SL = BO->getLocStart(); +        SL = BO->getLocStart();  +        CheckSLValidity(SL);          SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        } @@ -4757,7 +4842,8 @@ public:          const UnaryOperator* UO = MR.Nodes.getNodeAs<clang::UnaryOperator>("mcatc105uno");          DynOpNode = ast_type_traits::DynTypedNode::create<clang::UnaryOperator>(*UO); -        SL = UO->getLocStart(); +        SL = UO->getLocStart();  +        CheckSLValidity(SL);          SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        } @@ -4862,7 +4948,8 @@ public:      {        const ForStmt* FS = MR.Nodes.getNodeAs<clang::ForStmt>("mccse135"); -      SourceLocation SL = FS->getLocStart(); +      SourceLocation SL = FS->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -4945,7 +5032,8 @@ public:        const IntegerLiteral* IL = MR.Nodes.getNodeAs<clang::IntegerLiteral>("mcconst71int");        SourceRange SR; -      SL = IL->getLocStart(); +      SL = IL->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        SR.setBegin(SL);        SourceLocation SLE = IL->getLocEnd(); @@ -4959,7 +5047,8 @@ public:      {        const clang::StringLiteral* StringLit = MR.Nodes.getNodeAs<clang::StringLiteral>("mcconst71string"); -      SL = StringLit->getLocStart(); +      SL = StringLit->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "strat");        TagCandidateString = StringLit->getString().str(); @@ -4969,7 +5058,8 @@ public:      {        const CharacterLiteral* CL = MR.Nodes.getNodeAs<clang::CharacterLiteral>("mcconst71char"); -      SL = CL->getLocStart(); +      SL = CL->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        SourceRange SR; @@ -5042,7 +5132,8 @@ public:      {        const TypedefDecl* BN = MR.Nodes.getNodeAs<clang::TypedefDecl>("ident5typedef"); -      SourceLocation SL = BN->getLocStart(); +      SourceLocation SL = BN->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -5073,7 +5164,8 @@ public:      {        const RecordDecl* BN = MR.Nodes.getNodeAs<clang::RecordDecl>("ident5record"); -      SourceLocation SL = BN->getLocStart(); +      SourceLocation SL = BN->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -5125,7 +5217,8 @@ public:      {        const FieldDecl* BN = MR.Nodes.getNodeAs<clang::FieldDecl>("ident5field"); -      SourceLocation SL = BN->getLocStart(); +      SourceLocation SL = BN->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -5178,7 +5271,8 @@ public:      {        const ParmVarDecl* BN = MR.Nodes.getNodeAs<clang::ParmVarDecl>("ident5parmvar"); -      SourceLocation SL = BN->getLocStart(); +      SourceLocation SL = BN->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -5230,7 +5324,8 @@ public:      {        const FunctionDecl* BN = MR.Nodes.getNodeAs<clang::FunctionDecl>("ident5func"); -      SourceLocation SL = BN->getLocStart(); +      SourceLocation SL = BN->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -5277,7 +5372,8 @@ public:      {        const VarDecl* BN = MR.Nodes.getNodeAs<clang::VarDecl>("ident5var"); -      SourceLocation SL = BN->getLocStart(); +      SourceLocation SL = BN->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -5329,7 +5425,8 @@ public:      {        const EnumDecl* BN = MR.Nodes.getNodeAs<clang::EnumDecl>("ident5enum"); -      SourceLocation SL = BN->getLocStart(); +      SourceLocation SL = BN->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -5381,7 +5478,8 @@ public:      {        const LabelDecl* BN = MR.Nodes.getNodeAs<clang::LabelDecl>("ident5label"); -      SourceLocation SL = BN->getLocStart(); +      SourceLocation SL = BN->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -5433,7 +5531,8 @@ public:      {        const EnumConstantDecl* BN = MR.Nodes.getNodeAs<clang::EnumConstantDecl>("ident5enumconst"); -      SourceLocation SL = BN->getLocStart(); +      SourceLocation SL = BN->getLocStart();  +      CheckSLValidity(SL);        SL = Devi::SourceLocationHasMacro(SL, Rewrite, "start");        if (Devi::IsTheMatchInSysHeader(CheckSystemHeader, MR, SL)) @@ -5508,6 +5607,9 @@ public:                                     bool IsAngled, CharSourceRange FileNameRange, const FileEntry* File, \                                     StringRef SearchPath, StringRef RelativePath, const clang::Module* Imported)    { +  +    CheckSLValidity(HashLoc); +  #if defined(__linux__)      std::ifstream HeaderABS(SearchPath.str() + "/" + FileName.str());      std::ifstream HeaderRel(RelativePath.str() + "/" + FileName.str()); @@ -5713,7 +5815,8 @@ public:    virtual void Defined(const Token &MacroNameTok, const MacroDefinition &MD, SourceRange Range)    {  #if 1 -    SourceLocation SL [[maybe_unused]] = Range.getBegin(); +    SourceLocation SL [[maybe_unused]] = Range.getBegin();  +    CheckSLValidity(SL);  #if 0      assert(SL.isValid(), "the SourceLocation for macro Defined is not valid."); @@ -5779,7 +5882,8 @@ public:      if (MI != nullptr && DMD != nullptr)      { -      SourceLocation SL = MacroNameTok.getLocation(); +      SourceLocation SL = MacroNameTok.getLocation();  +      CheckSLValidity(SL);  #if 0        assert(SL.isValid(), "the SourceLocation for MacroUndefined is not valid."); @@ -5872,7 +5976,8 @@ public:  #if 1      const MacroInfo* MI = MD->getMacroInfo(); -    SourceLocation SL = MacroNameTok.getLocation(); +    SourceLocation SL = MacroNameTok.getLocation();  +    CheckSLValidity(SL);  #if 0      assert(SL->isValid(), "the SourceLocation for MacroDefined is not valid."); @@ -6152,6 +6257,7 @@ public:    {  #if 1      SourceLocation SL = MacroNameTok.getLocation(); +    CheckSLValidity(SL);  #if 0      assert(SL.isValid(), "the SourceLocation for MacroExpands is not valid."); @@ -6426,8 +6532,10 @@ public:    virtual void Elif(SourceLocation Loc, SourceRange ConditionRange, ConditionValueKind ConditionValue, SourceLocation IfLoc)    {  #if 1 -    SourceLocation SLoc = SM.getSpellingLoc(Loc); -    SourceLocation SIfLoc = SM.getSpellingLoc(IfLoc); +    SourceLocation SLoc = SM.getSpellingLoc(Loc);  +    CheckSLValidity(SLoc); +    SourceLocation SIfLoc = SM.getSpellingLoc(IfLoc);  +    CheckSLValidity(SIfLoc);      if (SM.getFileID(SLoc) != SM.getFileID(SIfLoc))      { @@ -6454,7 +6562,9 @@ public:    {  #if 1      SourceLocation SLoc = SM.getSpellingLoc(Loc); +    CheckSLValidity(SLoc);      SourceLocation SIfLoc = SM.getSpellingLoc(IfLoc); +    CheckSLValidity(SIfLoc);      if (SM.getFileID(SLoc) != SM.getFileID(SIfLoc))      { @@ -6480,8 +6590,10 @@ public:    virtual void Endif (SourceLocation Loc, SourceLocation IfLoc)    {  #if 1 -    SourceLocation SLoc = SM.getSpellingLoc(Loc); -    SourceLocation SIfLoc = SM.getSpellingLoc(IfLoc); +    SourceLocation SLoc = SM.getSpellingLoc(Loc);  +    CheckSLValidity(SLoc); +    SourceLocation SIfLoc = SM.getSpellingLoc(IfLoc);  +    CheckSLValidity(SIfLoc);      if (SM.getFileID(SLoc) != SM.getFileID(SIfLoc))      { @@ -7315,7 +7427,8 @@ public:    {      DiagnosticConsumer::HandleDiagnostic(DiagLevel, Info); -    SourceLocation SL = Info.getLocation(); +    SourceLocation SL = Info.getLocation();  +    CheckSLValidity(SL);      SourceManager &SM = Info.getSourceManager();  | 
