Author: alexfh Date: Wed Apr 17 09:19:47 2019 New Revision: 358589 URL: http://llvm.org/viewvc/llvm-project?rev=358589&view=rev Log: [clang-tidy] Fix invalid location in readability-misleading-indentation diagnostic
Before this patch readability-misleading-indentation could issue diagnostics with an invalid location, which would lead to an assertion failure in ClangTidyContext::diag() Modified: clang-tools-extra/trunk/clang-tidy/readability/MisleadingIndentationCheck.cpp clang-tools-extra/trunk/test/clang-tidy/readability-misleading-indentation.cpp Modified: clang-tools-extra/trunk/clang-tidy/readability/MisleadingIndentationCheck.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/readability/MisleadingIndentationCheck.cpp?rev=358589&r1=358588&r2=358589&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/readability/MisleadingIndentationCheck.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/readability/MisleadingIndentationCheck.cpp Wed Apr 17 09:19:47 2019 @@ -81,6 +81,10 @@ void MisleadingIndentationCheck::missing SourceLocation InnerLoc = Inner->getBeginLoc(); SourceLocation OuterLoc = CurrentStmt->getBeginLoc(); + if (InnerLoc.isInvalid() || InnerLoc.isMacroID() || OuterLoc.isInvalid() || + OuterLoc.isMacroID()) + continue; + if (SM.getExpansionLineNumber(InnerLoc) == SM.getExpansionLineNumber(OuterLoc)) continue; @@ -88,7 +92,7 @@ void MisleadingIndentationCheck::missing const Stmt *NextStmt = CStmt->body_begin()[i + 1]; SourceLocation NextLoc = NextStmt->getBeginLoc(); - if (InnerLoc.isMacroID() || OuterLoc.isMacroID() || NextLoc.isMacroID()) + if (NextLoc.isInvalid() || NextLoc.isMacroID()) continue; if (SM.getExpansionColumnNumber(InnerLoc) == Modified: clang-tools-extra/trunk/test/clang-tidy/readability-misleading-indentation.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/readability-misleading-indentation.cpp?rev=358589&r1=358588&r2=358589&view=diff ============================================================================== --- clang-tools-extra/trunk/test/clang-tidy/readability-misleading-indentation.cpp (original) +++ clang-tools-extra/trunk/test/clang-tidy/readability-misleading-indentation.cpp Wed Apr 17 09:19:47 2019 @@ -8,7 +8,7 @@ void foo2(); foo1(); \ foo2(); -int main() +void f() { bool cond1 = true; bool cond2 = true; @@ -90,7 +90,7 @@ int main() else { } // CHECK-MESSAGES: :[[@LINE-2]]:8: warning: different indentation for 'if' and corresponding 'else' [readability-misleading-indentation] - + if (cond1) { if (cond1) { } @@ -109,3 +109,12 @@ int main() BLOCK } + +void g(bool x) { + if (x) + #pragma unroll + for (int k = 0; k < 1; ++k) {} + + #pragma unroll + for (int k = 0; k < 1; ++k) {} +} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits