From: Hans Wennborg Date: Wed, 22 Jul 2020 15:01:57 +0000 (+0200) Subject: Revert abd45154b "[Coverage] Add comment to skipped regions" X-Git-Tag: llvmorg-13-init~17145 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=238bbd48c5a5f84deca36e5df980241578f7c1df;p=platform%2Fupstream%2Fllvm.git Revert abd45154b "[Coverage] Add comment to skipped regions" This casued assertions during Chromium builds. See comment on the code review > Bug filled here: https://bugs.llvm.org/show_bug.cgi?id=45757. > Add comment to skipped regions so we don't track execution count for lines containing only comments. > > Differential Revision: https://reviews.llvm.org/D84208 This reverts commit abd45154bdb6b76c5b480455eacc8c75b08242aa and the follow-up 87d725473380652bbe845fd2fbd9c0507a55172f. --- diff --git a/clang/include/clang/Lex/Preprocessor.h b/clang/include/clang/Lex/Preprocessor.h index b0dd363..5cd017f 100644 --- a/clang/include/clang/Lex/Preprocessor.h +++ b/clang/include/clang/Lex/Preprocessor.h @@ -419,9 +419,6 @@ class Preprocessor { /// The number of (LexLevel 0) preprocessor tokens. unsigned TokenCount = 0; - /// Preprocess every token regardless of LexLevel. - bool PreprocessToken = false; - /// The maximum number of (LexLevel 0) tokens before issuing a -Wmax-tokens /// warning, or zero for unlimited. unsigned MaxTokens = 0; @@ -1041,8 +1038,6 @@ public: OnToken = std::move(F); } - void setPreprocessToken(bool Preprocess) { PreprocessToken = Preprocess; } - bool isMacroDefined(StringRef Id) { return isMacroDefined(&Identifiers.get(Id)); } diff --git a/clang/lib/CodeGen/CodeGenAction.cpp b/clang/lib/CodeGen/CodeGenAction.cpp index 5a6ce0f..5592511 100644 --- a/clang/lib/CodeGen/CodeGenAction.cpp +++ b/clang/lib/CodeGen/CodeGenAction.cpp @@ -990,9 +990,11 @@ CodeGenAction::CreateASTConsumer(CompilerInstance &CI, StringRef InFile) { CoverageSourceInfo *CoverageInfo = nullptr; // Add the preprocessor callback only when the coverage mapping is generated. - if (CI.getCodeGenOpts().CoverageMapping) - CoverageInfo = CodeGen::CoverageMappingModuleGen::setUpCoverageCallbacks( - CI.getPreprocessor()); + if (CI.getCodeGenOpts().CoverageMapping) { + CoverageInfo = new CoverageSourceInfo; + CI.getPreprocessor().addPPCallbacks( + std::unique_ptr(CoverageInfo)); + } std::unique_ptr Result(new BackendConsumer( BA, CI.getDiagnostics(), CI.getHeaderSearchOpts(), diff --git a/clang/lib/CodeGen/CoverageMappingGen.cpp b/clang/lib/CodeGen/CoverageMappingGen.cpp index 6729c7f..78b268f 100644 --- a/clang/lib/CodeGen/CoverageMappingGen.cpp +++ b/clang/lib/CodeGen/CoverageMappingGen.cpp @@ -35,40 +35,8 @@ using namespace clang; using namespace CodeGen; using namespace llvm::coverage; -CoverageSourceInfo * -CoverageMappingModuleGen::setUpCoverageCallbacks(Preprocessor &PP) { - CoverageSourceInfo *CoverageInfo = new CoverageSourceInfo; - PP.addPPCallbacks(std::unique_ptr(CoverageInfo)); - PP.addCommentHandler(CoverageInfo); - PP.setPreprocessToken(true); - PP.setTokenWatcher([CoverageInfo](clang::Token Tok) { - // Update previous token location. - CoverageInfo->PrevTokLoc = Tok.getLocation(); - CoverageInfo->updateNextTokLoc(Tok.getLocation()); - }); - return CoverageInfo; -} - void CoverageSourceInfo::SourceRangeSkipped(SourceRange Range, SourceLocation) { - SkippedRanges.push_back({Range}); -} - -bool CoverageSourceInfo::HandleComment(Preprocessor &PP, SourceRange Range) { - if (PrevTokLoc.isValid() && PrevTokLoc == BeforeCommentLoc) - SkippedRanges.back().Range.setEnd(Range.getEnd()); - else { - SkippedRanges.push_back({Range, PrevTokLoc}); - BeforeCommentLoc = PrevTokLoc; - } - LastCommentIndex = SkippedRanges.size() - 1; - return false; -} - -void CoverageSourceInfo::updateNextTokLoc(SourceLocation Loc) { - if (LastCommentIndex) { - SkippedRanges[LastCommentIndex.getValue()].NextTokLoc = Loc; - LastCommentIndex = None; - } + SkippedRanges.push_back(Range); } namespace { @@ -306,34 +274,8 @@ public: return None; } - /// This shrinks the skipped range if it spans a line that contains a - /// non-comment token. If shrinking the skipped range would make it empty, - /// this returns None. - Optional adjustSkippedRange(SourceManager &SM, - SpellingRegion SR, - SourceLocation PrevTokLoc, - SourceLocation NextTokLoc) { - // If Range begin location is invalid, it's not a comment region. - if (PrevTokLoc.isInvalid()) - return SR; - unsigned PrevTokLine = SM.getSpellingLineNumber(PrevTokLoc); - unsigned NextTokLine = SM.getSpellingLineNumber(NextTokLoc); - SpellingRegion newSR(SR); - if (SR.LineStart == PrevTokLine) { - newSR.LineStart = SR.LineStart + 1; - newSR.ColumnStart = 1; - } - if (SR.LineEnd == NextTokLine) { - newSR.LineEnd = SR.LineEnd - 1; - newSR.ColumnEnd = 1; - } - if (newSR.isInSourceOrder()) - return newSR; - return None; - } - /// Gather all the regions that were skipped by the preprocessor - /// using the constructs like #if or comments. + /// using the constructs like #if. void gatherSkippedRegions() { /// An array of the minimum lineStarts and the maximum lineEnds /// for mapping regions from the appropriate source files. @@ -349,10 +291,9 @@ public: } auto SkippedRanges = CVM.getSourceInfo().getSkippedRanges(); - for (auto &I : SkippedRanges) { - SourceRange Range = I.Range; - auto LocStart = Range.getBegin(); - auto LocEnd = Range.getEnd(); + for (const auto &I : SkippedRanges) { + auto LocStart = I.getBegin(); + auto LocEnd = I.getEnd(); assert(SM.isWrittenInSameFile(LocStart, LocEnd) && "region spans multiple files"); @@ -360,11 +301,6 @@ public: if (!CovFileID) continue; SpellingRegion SR{SM, LocStart, LocEnd}; - if (Optional res = - adjustSkippedRange(SM, SR, I.PrevTokLoc, I.NextTokLoc)) - SR = res.getValue(); - else - continue; auto Region = CounterMappingRegion::makeSkipped( *CovFileID, SR.LineStart, SR.ColumnStart, SR.LineEnd, SR.ColumnEnd); // Make sure that we only collect the regions that are inside diff --git a/clang/lib/CodeGen/CoverageMappingGen.h b/clang/lib/CodeGen/CoverageMappingGen.h index be94c30..5d79d1e 100644 --- a/clang/lib/CodeGen/CoverageMappingGen.h +++ b/clang/lib/CodeGen/CoverageMappingGen.h @@ -16,7 +16,6 @@ #include "clang/Basic/LLVM.h" #include "clang/Basic/SourceLocation.h" #include "clang/Lex/PPCallbacks.h" -#include "clang/Lex/Preprocessor.h" #include "llvm/ADT/DenseMap.h" #include "llvm/IR/GlobalValue.h" #include "llvm/Support/raw_ostream.h" @@ -30,42 +29,15 @@ class Preprocessor; class Decl; class Stmt; -struct SkippedRange { - SourceRange Range; - // The location of token before the skipped source range. - SourceLocation PrevTokLoc; - // The location of token after the skipped source range. - SourceLocation NextTokLoc; - - SkippedRange(SourceRange Range, SourceLocation PrevTokLoc = SourceLocation(), - SourceLocation NextTokLoc = SourceLocation()) - : Range(Range), PrevTokLoc(PrevTokLoc), NextTokLoc(NextTokLoc) {} -}; - /// Stores additional source code information like skipped ranges which /// is required by the coverage mapping generator and is obtained from /// the preprocessor. -class CoverageSourceInfo : public PPCallbacks, public CommentHandler { - // A vector of skipped source ranges and PrevTokLoc with NextTokLoc. - std::vector SkippedRanges; - Optional LastCommentIndex = None; - +class CoverageSourceInfo : public PPCallbacks { + std::vector SkippedRanges; public: - // Location of the token parsed before HandleComment is called. This is - // updated every time Preprocessor::Lex lexes a new token. - SourceLocation PrevTokLoc; - // The location of token before comment. - SourceLocation BeforeCommentLoc; - - std::vector &getSkippedRanges() { - return SkippedRanges; - } + ArrayRef getSkippedRanges() const { return SkippedRanges; } void SourceRangeSkipped(SourceRange Range, SourceLocation EndifLoc) override; - - bool HandleComment(Preprocessor &PP, SourceRange Range) override; - - void updateNextTokLoc(SourceLocation Loc); }; namespace CodeGen { @@ -94,8 +66,6 @@ class CoverageMappingModuleGen { uint64_t FilenamesRef); public: - static CoverageSourceInfo *setUpCoverageCallbacks(Preprocessor &PP); - CoverageMappingModuleGen(CodeGenModule &CGM, CoverageSourceInfo &SourceInfo) : CGM(CGM), SourceInfo(SourceInfo) {} diff --git a/clang/lib/Lex/Preprocessor.cpp b/clang/lib/Lex/Preprocessor.cpp index 5e8dfda..160e2b6 100644 --- a/clang/lib/Lex/Preprocessor.cpp +++ b/clang/lib/Lex/Preprocessor.cpp @@ -969,8 +969,7 @@ void Preprocessor::Lex(Token &Result) { LastTokenWasAt = Result.is(tok::at); --LexLevel; - if ((LexLevel == 0 || PreprocessToken) && - !Result.getFlag(Token::IsReinjected)) { + if (LexLevel == 0 && !Result.getFlag(Token::IsReinjected)) { ++TokenCount; if (OnToken) OnToken(Result); diff --git a/clang/test/CoverageMapping/break.c b/clang/test/CoverageMapping/break.c index 191f347..08461d7 100644 --- a/clang/test/CoverageMapping/break.c +++ b/clang/test/CoverageMapping/break.c @@ -1,5 +1,4 @@ -// RUN: %strip_comments > %t.stripped.c -// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name break.c %t.stripped.c | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name break.c %s | FileCheck %s int main() { // CHECK: File 0, [[@LINE]]:12 -> {{[0-9]+}}:2 = #0 int cnt = 0; // CHECK-NEXT: File 0, [[@LINE+1]]:9 -> [[@LINE+1]]:18 = #0 diff --git a/clang/test/CoverageMapping/builtinmacro.c b/clang/test/CoverageMapping/builtinmacro.c index 0de0e8e..63f5584 100644 --- a/clang/test/CoverageMapping/builtinmacro.c +++ b/clang/test/CoverageMapping/builtinmacro.c @@ -1,5 +1,4 @@ -// RUN: %strip_comments > %t.stripped.c -// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name builtinmacro.c %t.stripped.c | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name builtinmacro.c %s | FileCheck %s // Test the coverage mapping generation for built-in macroes. diff --git a/clang/test/CoverageMapping/classtemplate.cpp b/clang/test/CoverageMapping/classtemplate.cpp index 9250069..0dbb0c0 100644 --- a/clang/test/CoverageMapping/classtemplate.cpp +++ b/clang/test/CoverageMapping/classtemplate.cpp @@ -1,5 +1,4 @@ -// RUN: %strip_comments > %t.stripped.cpp -// RUN: %clang_cc1 -triple %itanium_abi_triple -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name classtemplate.cpp %t.stripped.cpp > %tmapping +// RUN: %clang_cc1 -triple %itanium_abi_triple -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name classtemplate.cpp %s > %tmapping // RUN: FileCheck -input-file %tmapping %s --check-prefix=CHECK-CONSTRUCTOR // RUN: FileCheck -input-file %tmapping %s --check-prefix=CHECK-GETTER // RUN: FileCheck -input-file %tmapping %s --check-prefix=CHECK-SETTER diff --git a/clang/test/CoverageMapping/comment-in-macro.c b/clang/test/CoverageMapping/comment-in-macro.c index 86b554f..06e8adb 100644 --- a/clang/test/CoverageMapping/comment-in-macro.c +++ b/clang/test/CoverageMapping/comment-in-macro.c @@ -1,5 +1,4 @@ -// RUN: %strip_comments > %t.stripped.c -// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only %t.stripped.c | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only %s | FileCheck %s #define x1 "" // ... #define x2 return 0 @@ -8,5 +7,5 @@ int main() { // CHECK-NEXT: File 0, [[@LINE]]:12 -> [[@LINE+3]]:2 = #0 x1; // CHECK-NEXT: Expansion,File 0, [[@LINE]]:3 -> [[@LINE]]:5 = #0 x2; // CHECK-NEXT: Expansion,File 0, [[@LINE]]:3 -> [[@LINE]]:5 = #0 } -// CHECK-NEXT: File 1, 4:12 -> 4:14 = #0 -// CHECK-NEXT: File 2, 5:12 -> 5:20 = #0 +// CHECK-NEXT: File 1, 3:12 -> 3:14 = #0 +// CHECK-NEXT: File 2, 4:12 -> 4:20 = #0 diff --git a/clang/test/CoverageMapping/continue.c b/clang/test/CoverageMapping/continue.c index 774fe2ee..9864c91 100644 --- a/clang/test/CoverageMapping/continue.c +++ b/clang/test/CoverageMapping/continue.c @@ -1,5 +1,4 @@ -// RUN: %strip_comments > %t.stripped.c -// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name continue.c %t.stripped.c | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name continue.c %s | FileCheck %s int main() { // CHECK: File 0, [[@LINE]]:12 -> [[@LINE+21]]:2 = #0 int j = 0; // CHECK-NEXT: File 0, [[@LINE+2]]:18 -> [[@LINE+2]]:24 = (#0 + #1) diff --git a/clang/test/CoverageMapping/coroutine.cpp b/clang/test/CoverageMapping/coroutine.cpp index a614e6e..dc94733 100644 --- a/clang/test/CoverageMapping/coroutine.cpp +++ b/clang/test/CoverageMapping/coroutine.cpp @@ -1,7 +1,6 @@ // fixme: the following line is added to cleanup bots, will be removed in weeks. // RUN: rm -f %S/coroutine.ll -// RUN: %strip_comments > %t.stripped.cpp -// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -fcoroutines-ts -std=c++14 -emit-llvm -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping %t.stripped.cpp -o - | FileCheck %s +// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -fcoroutines-ts -std=c++14 -emit-llvm -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping %s -o - | FileCheck %s namespace std::experimental { template diff --git a/clang/test/CoverageMapping/deferred-region.cpp b/clang/test/CoverageMapping/deferred-region.cpp index 8db6119..45113e4 100644 --- a/clang/test/CoverageMapping/deferred-region.cpp +++ b/clang/test/CoverageMapping/deferred-region.cpp @@ -1,5 +1,4 @@ -// RUN: %strip_comments > %t.stripped.cpp -// RUN: %clang_cc1 -std=c++11 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -fexceptions -fcxx-exceptions -emit-llvm-only -triple %itanium_abi_triple -main-file-name deferred-region.cpp -I %S/Inputs %t.stripped.cpp | FileCheck %s +// RUN: %clang_cc1 -std=c++11 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -fexceptions -fcxx-exceptions -emit-llvm-only -triple %itanium_abi_triple -main-file-name deferred-region.cpp -I %S/Inputs %s | FileCheck %s #define IF if #define STMT(S) S diff --git a/clang/test/CoverageMapping/if.cpp b/clang/test/CoverageMapping/if.cpp index 8ffc09d..e3d6f4e 100644 --- a/clang/test/CoverageMapping/if.cpp +++ b/clang/test/CoverageMapping/if.cpp @@ -1,5 +1,4 @@ -// RUN: %strip_comments > %t.stripped.cpp -// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -std=c++1z -triple %itanium_abi_triple -main-file-name if.cpp %t.stripped.cpp | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -std=c++1z -triple %itanium_abi_triple -main-file-name if.cpp %s | FileCheck %s int nop() { return 0; } diff --git a/clang/test/CoverageMapping/includehell.cpp b/clang/test/CoverageMapping/includehell.cpp index c92f12e..fd08d6a 100644 --- a/clang/test/CoverageMapping/includehell.cpp +++ b/clang/test/CoverageMapping/includehell.cpp @@ -51,7 +51,6 @@ int main() { // CHECK-START: File [[START3]], 4:29 -> 5:1 = #9 // CHECK-CODE: File [[CODE1:[0-9]]], 1:1 -> 14:1 = #1 -// CHECK-CODE: Skipped,File [[CODE1]], 1:1 -> 1:41 = 0 // CHECK-CODE-NEXT: File [[CODE1]], 4:5 -> 4:11 = #1 // CHECK-CODE: File [[CODE1]], 4:13 -> 6:2 = #2 // CHECK-CODE: File [[CODE1]], 6:8 -> 8:2 = (#1 - #2) @@ -59,7 +58,6 @@ int main() { // CHECK-CODE: File [[CODE1]], 9:11 -> 11:2 = #3 // CHECK-CODE: File [[CODE1]], 11:8 -> 13:2 = (#1 - #3) // CHECK-CODE: File [[CODE2:[0-9]]], 1:1 -> 14:1 = #5 -// CHECK-CODE: Skipped,File [[CODE2]], 1:1 -> 1:41 = 0 // CHECK-CODE-NEXT: File [[CODE2]], 4:5 -> 4:11 = #5 // CHECK-CODE: File [[CODE2]], 4:13 -> 6:2 = #6 // CHECK-CODE: File [[CODE2]], 6:8 -> 8:2 = (#5 - #6) diff --git a/clang/test/CoverageMapping/label.cpp b/clang/test/CoverageMapping/label.cpp index e77372d..995835a 100644 --- a/clang/test/CoverageMapping/label.cpp +++ b/clang/test/CoverageMapping/label.cpp @@ -1,7 +1,6 @@ -// RUN: %strip_comments > %t.stripped.cpp -// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name label.cpp %t.stripped.cpp | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name label.cpp %s | FileCheck %s -// CHECK: func + // CHECK: func void func() { // CHECK-NEXT: File 0, [[@LINE]]:13 -> {{[0-9]+}}:2 = #0 int i = 0; // CHECK-NEXT: File 0, [[@LINE+2]]:14 -> [[@LINE+2]]:20 = (#0 + #3) // CHECK-NEXT: File 0, [[@LINE+1]]:22 -> [[@LINE+1]]:25 = #3 diff --git a/clang/test/CoverageMapping/logical.cpp b/clang/test/CoverageMapping/logical.cpp index cca0337..bc7c785 100644 --- a/clang/test/CoverageMapping/logical.cpp +++ b/clang/test/CoverageMapping/logical.cpp @@ -1,5 +1,4 @@ -// RUN: %strip_comments > %t.stripped.cpp -// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name logical.cpp %t.stripped.cpp | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name logical.cpp %s | FileCheck %s int main() { // CHECK: File 0, [[@LINE]]:12 -> [[@LINE+15]]:2 = #0 bool bt = true; diff --git a/clang/test/CoverageMapping/loops.cpp b/clang/test/CoverageMapping/loops.cpp index 498d214..ff7aafd 100644 --- a/clang/test/CoverageMapping/loops.cpp +++ b/clang/test/CoverageMapping/loops.cpp @@ -1,7 +1,6 @@ -// RUN: %strip_comments > %t.stripped.cpp -// RUN: %clang_cc1 -std=c++11 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name loops.cpp %t.stripped.cpp | FileCheck %s +// RUN: %clang_cc1 -std=c++11 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name loops.cpp %s | FileCheck %s -// CHECK: rangedFor + // CHECK: rangedFor void rangedFor() { // CHECK-NEXT: File 0, [[@LINE]]:18 -> {{[0-9]+}}:2 = #0 int arr[] = { 1, 2, 3, 4, 5 }; int sum = 0; // CHECK: Gap,File 0, [[@LINE+1]]:20 -> [[@LINE+1]]:21 = #1 diff --git a/clang/test/CoverageMapping/macro-expressions.cpp b/clang/test/CoverageMapping/macro-expressions.cpp index 60afc52..26d70c6 100644 --- a/clang/test/CoverageMapping/macro-expressions.cpp +++ b/clang/test/CoverageMapping/macro-expressions.cpp @@ -1,5 +1,5 @@ -// RUN: %strip_comments > %t.stripped.cpp -// RUN: %clang_cc1 -std=c++11 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name macro-expressions.cpp -w %t.stripped.cpp | FileCheck %s +// RUN: %clang_cc1 -std=c++11 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name macro-expressions.cpp -w %s | FileCheck %s + #define EXPR(x) (x) #define NEXPR(x) (!x) #define DECL(T, x) T x diff --git a/clang/test/CoverageMapping/macroparams2.c b/clang/test/CoverageMapping/macroparams2.c index 30ce25d..4e04581 100644 --- a/clang/test/CoverageMapping/macroparams2.c +++ b/clang/test/CoverageMapping/macroparams2.c @@ -1,5 +1,5 @@ -// RUN: %strip_comments > %t.stripped.c -// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name macroparams2.c %t.stripped.c | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name macroparams2.c %s | FileCheck %s + #define MACRO(REFS, CALLS) (4 * (CALLS) < (REFS)) struct S { diff --git a/clang/test/CoverageMapping/macros.c b/clang/test/CoverageMapping/macros.c index 83e2029..39cd190 100644 --- a/clang/test/CoverageMapping/macros.c +++ b/clang/test/CoverageMapping/macros.c @@ -1,5 +1,5 @@ -// RUN: %strip_comments > %t.stripped.c -// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name macros.c %t.stripped.c | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name macros.c %s | FileCheck %s + #define MACRO return; bar() #define MACRO_2 bar() #define MACRO_1 return; MACRO_2 diff --git a/clang/test/CoverageMapping/macroscopes.cpp b/clang/test/CoverageMapping/macroscopes.cpp index 62f5dbe..3f5f65e 100644 --- a/clang/test/CoverageMapping/macroscopes.cpp +++ b/clang/test/CoverageMapping/macroscopes.cpp @@ -1,5 +1,5 @@ -// RUN: %strip_comments > %t.stripped.cpp -// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name macroscopes.cpp %t.stripped.cpp | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name macroscopes.cpp %s | FileCheck %s + #define starts_a_scope for (int i = 0; i < 2; ++i) { #define ends_a_scope \ diff --git a/clang/test/CoverageMapping/moremacros.c b/clang/test/CoverageMapping/moremacros.c index ed89dca..5e0d4a6 100644 --- a/clang/test/CoverageMapping/moremacros.c +++ b/clang/test/CoverageMapping/moremacros.c @@ -1,5 +1,5 @@ -// RUN: %strip_comments > %t.stripped.c -// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name macro-expansion.c %t.stripped.c | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name macro-expansion.c %s | FileCheck %s + #define LBRAC { #define RBRAC } diff --git a/clang/test/CoverageMapping/objc.m b/clang/test/CoverageMapping/objc.m index 008d291..4e4c184 100644 --- a/clang/test/CoverageMapping/objc.m +++ b/clang/test/CoverageMapping/objc.m @@ -1,5 +1,4 @@ -// RUN: %strip_comments > %t.stripped.m -// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name objc.m -triple x86_64-apple-darwin -fobjc-runtime=macosx-fragile-10.5 -w %t.stripped.m | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name objc.m -triple x86_64-apple-darwin -fobjc-runtime=macosx-fragile-10.5 -w %s | FileCheck %s @interface A - (void)bork:(int)msg; diff --git a/clang/test/CoverageMapping/pr32679.cpp b/clang/test/CoverageMapping/pr32679.cpp index c93133f..eac3afb 100644 --- a/clang/test/CoverageMapping/pr32679.cpp +++ b/clang/test/CoverageMapping/pr32679.cpp @@ -1,6 +1,5 @@ -// RUN: %strip_comments > %t.stripped.cpp -// RUN: %clang_cc1 -cc1 -triple i686-pc-windows-msvc19.0.0 -emit-obj -fprofile-instrument=clang -std=c++14 -fdelayed-template-parsing -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name pr32679.cpp -o - %t.stripped.cpp | FileCheck %s -check-prefix=MSABI -implicit-check-not=f2 -// RUN: %clang_cc1 -cc1 -triple %itanium_abi_triple -emit-obj -fprofile-instrument=clang -std=c++14 -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name pr32679.cpp -o - %t.stripped.cpp | FileCheck %s -check-prefix=ITANIUM -implicit-check-not=f2 +// RUN: %clang_cc1 -cc1 -triple i686-pc-windows-msvc19.0.0 -emit-obj -fprofile-instrument=clang -std=c++14 -fdelayed-template-parsing -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name pr32679.cpp -o - %s | FileCheck %s -check-prefix=MSABI -implicit-check-not=f2 +// RUN: %clang_cc1 -cc1 -triple %itanium_abi_triple -emit-obj -fprofile-instrument=clang -std=c++14 -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name pr32679.cpp -o - %s | FileCheck %s -check-prefix=ITANIUM -implicit-check-not=f2 template struct CreateSpecialization; diff --git a/clang/test/CoverageMapping/preprocessor.c b/clang/test/CoverageMapping/preprocessor.c index b68aa2e..9225c9f 100644 --- a/clang/test/CoverageMapping/preprocessor.c +++ b/clang/test/CoverageMapping/preprocessor.c @@ -1,7 +1,6 @@ -// RUN: %strip_comments > %t.stripped.c -// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name preprocessor.c %t.stripped.c | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name preprocessor.c %s | FileCheck %s -// CHECK: func + // CHECK: func void func() { // CHECK: File 0, [[@LINE]]:13 -> [[@LINE+5]]:2 = #0 int i = 0; #ifdef MACRO // CHECK-NEXT: Skipped,File 0, [[@LINE]]:1 -> [[@LINE+2]]:7 = 0 @@ -12,7 +11,7 @@ void func() { // CHECK: File 0, [[@LINE]]:13 -> [[@LINE+5]]:2 = #0 // CHECK: main int main() { // CHECK-NEXT: File 0, [[@LINE]]:12 -> {{[0-9]+}}:2 = #0 int i = 0; -#if 0 // CHECK-NEXT: Skipped,File 0, [[@LINE]]:1 -> [[@LINE+4]]:9 = 0 +# if 0 // CHECK-NEXT: Skipped,File 0, [[@LINE]]:1 -> [[@LINE+4]]:29 = 0 if(i == 0) { i = 1; } @@ -30,7 +29,7 @@ int main() { // CHECK-NEXT: File 0, [[@LINE]]:12 -> {{[0-9]+}}:2 = #0 } #endif - // CHECK-NEXT: Skipped,File 0, [[@LINE+1]]:1 -> [[@LINE+4]]:8 + // CHECK-NEXT: Skipped,File 0, [[@LINE+1]]:1 -> [[@LINE+4]]:24 #\ if 0 #\ @@ -60,7 +59,7 @@ int main() { // CHECK-NEXT: File 0, [[@LINE]]:12 -> {{[0-9]+}}:2 = #0 #\ endif - // CHECK-NEXT: Skipped,File 0, [[@LINE+1]]:1 -> [[@LINE+6]]:10 + // CHECK-NEXT: Skipped,File 0, [[@LINE+1]]:1 -> [[@LINE+6]]:26 #\ ifdef NOT_DEFINED #\ diff --git a/clang/test/CoverageMapping/return.c b/clang/test/CoverageMapping/return.c index e6107bc..440acb56 100644 --- a/clang/test/CoverageMapping/return.c +++ b/clang/test/CoverageMapping/return.c @@ -1,7 +1,6 @@ -// RUN: %strip_comments > %t.stripped.c -// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name return.c %t.stripped.c | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name return.c %s | FileCheck %s -// CHECK: func + // CHECK: func void func() { // CHECK: File 0, [[@LINE]]:13 -> [[@LINE+3]]:2 = #0 return; int i = 0; // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:2 = 0 diff --git a/clang/test/CoverageMapping/switch.cpp b/clang/test/CoverageMapping/switch.cpp index 1a8db09..25ea405 100644 --- a/clang/test/CoverageMapping/switch.cpp +++ b/clang/test/CoverageMapping/switch.cpp @@ -1,7 +1,6 @@ -// RUN: %strip_comments > %t.stripped.cpp -// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -std=c++1z -triple %itanium_abi_triple -main-file-name switch.cpp %t.stripped.cpp | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -std=c++1z -triple %itanium_abi_triple -main-file-name switch.cpp %s | FileCheck %s -// CHECK: foo + // CHECK: foo void foo(int i) { // CHECK-NEXT: File 0, [[@LINE]]:17 -> [[@LINE+8]]:2 = #0 switch(i) { // CHECK-NEXT: Gap,File 0, [[@LINE]]:13 -> [[@LINE+4]]:10 = 0 case 1: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:11 = #2 diff --git a/clang/test/CoverageMapping/switchmacro.c b/clang/test/CoverageMapping/switchmacro.c index 5c6a37e..fc0392f 100644 --- a/clang/test/CoverageMapping/switchmacro.c +++ b/clang/test/CoverageMapping/switchmacro.c @@ -1,5 +1,4 @@ -// RUN: %strip_comments > %t.stripped.c -// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name switchmacro.c %t.stripped.c | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name switchmacro.c %s | FileCheck %s #define FOO(x) (void)x diff --git a/clang/test/CoverageMapping/test.c b/clang/test/CoverageMapping/test.c index 559036a..ae73fcb 100644 --- a/clang/test/CoverageMapping/test.c +++ b/clang/test/CoverageMapping/test.c @@ -1,5 +1,4 @@ -// RUN: %strip_comments > %t.stripped.c -// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name test.c %t.stripped.c | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name test.c %s | FileCheck %s void bar(); static void static_func(); diff --git a/clang/test/CoverageMapping/trycatch.cpp b/clang/test/CoverageMapping/trycatch.cpp index ba1b26b..5d284da 100644 --- a/clang/test/CoverageMapping/trycatch.cpp +++ b/clang/test/CoverageMapping/trycatch.cpp @@ -1,5 +1,4 @@ -// RUN: %strip_comments > %t.stripped.cpp -// RUN: %clang_cc1 -triple %itanium_abi_triple -std=c++11 -fexceptions -fcxx-exceptions -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name trycatch.cpp %t.stripped.cpp | FileCheck %s +// RUN: %clang_cc1 -triple %itanium_abi_triple -std=c++11 -fexceptions -fcxx-exceptions -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name trycatch.cpp %s | FileCheck %s class Error { }; diff --git a/clang/test/CoverageMapping/unreachable-macro.c b/clang/test/CoverageMapping/unreachable-macro.c index b84acca..b9d4f36 100644 --- a/clang/test/CoverageMapping/unreachable-macro.c +++ b/clang/test/CoverageMapping/unreachable-macro.c @@ -1,5 +1,5 @@ -// RUN: %strip_comments > %t.stripped.c -// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only %t.stripped.c | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only %s | FileCheck %s + #define WHILE while (0) {} // CHECK: counters_in_macro_following_unreachable diff --git a/clang/test/CoverageMapping/while.c b/clang/test/CoverageMapping/while.c index e0c3ca3..616ecf6 100644 --- a/clang/test/CoverageMapping/while.c +++ b/clang/test/CoverageMapping/while.c @@ -1,7 +1,6 @@ -// RUN: %strip_comments > %t.stripped.c -// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name loops.cpp %t.stripped.c | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name loops.cpp %s | FileCheck %s -// CHECK: main + // CHECK: main int main() { // CHECK-NEXT: File 0, [[@LINE]]:12 -> [[@LINE+8]]:2 = #0 int j = 0; // CHECK-NEXT: File 0, [[@LINE+1]]:9 -> [[@LINE+1]]:14 = (#0 + #1) while(j < 5) ++j; // CHECK-NEXT: File 0, [[@LINE]]:15 -> [[@LINE]]:16 = #1 diff --git a/clang/test/lit.cfg.py b/clang/test/lit.cfg.py index 6c677ed..dacda68 100644 --- a/clang/test/lit.cfg.py +++ b/clang/test/lit.cfg.py @@ -91,11 +91,6 @@ config.substitutions.append( ('%hmaptool', "'%s' %s" % (config.python_executable, os.path.join(config.clang_tools_dir, 'hmaptool')))) -# Strip C++ comments "//"" from tests -config.substitutions.append( - ('%strip_comments', "sed 's/[ \t]*\/\/.*//' %s") -) - # Plugins (loadable modules) if config.has_plugins and config.llvm_plugin_ext: config.available_features.add('plugins') diff --git a/compiler-rt/test/profile/Inputs/instrprof-comdat.h b/compiler-rt/test/profile/Inputs/instrprof-comdat.h index 956496e..61e283cc 100644 --- a/compiler-rt/test/profile/Inputs/instrprof-comdat.h +++ b/compiler-rt/test/profile/Inputs/instrprof-comdat.h @@ -18,6 +18,6 @@ template T FOO::DoIt(T ti) { // HEADER: [[@LINE]]| 2|template if (I > ti / 2) // HEADER: [[@LINE]]| 20| if (I > ti t -= 1; // HEADER: [[@LINE]]| 8| t -= 1; } // HEADER: [[@LINE]]| 10| } - // HEADER: [[@LINE]]| | + // HEADER: [[@LINE]]| 1| return t; // HEADER: [[@LINE]]| 1| return t; } diff --git a/compiler-rt/test/profile/coverage_comments.cpp b/compiler-rt/test/profile/coverage_comments.cpp deleted file mode 100644 index 0cf78ad..0000000 --- a/compiler-rt/test/profile/coverage_comments.cpp +++ /dev/null @@ -1,71 +0,0 @@ -// RUN: %clangxx_profgen -fcoverage-mapping -Wno-comment -o %t %s -// RUN: env LLVM_PROFILE_FILE=%t.profraw %run %t -// RUN: llvm-profdata merge -o %t.profdata %t.profraw -// RUN: llvm-cov show %t -instr-profile %t.profdata -path-equivalence=/tmp,%S 2>&1 | FileCheck %s - -int main() { // CHECK: [[# @LINE]]| 1|int main() { - /* comment */ int x = 0; // CHECK-NEXT: [[# @LINE]]| 1| - int y = 0; /* comment */ // CHECK-NEXT: [[# @LINE]]| 1| - int z = 0; // comment // CHECK-NEXT: [[# @LINE]]| 1| - // comment // CHECK-NEXT: [[# @LINE]]| | - // CHECK-NEXT: [[# @LINE]]| | - x = 0; /* // CHECK-NEXT: [[# @LINE]]| 1| - comment // CHECK-NEXT: [[# @LINE]]| | - */ // CHECK-NEXT: [[# @LINE]]| | - // CHECK-NEXT: [[# @LINE]]| | - /* // CHECK-NEXT: [[# @LINE]]| | - comment // CHECK-NEXT: [[# @LINE]]| | - */ x = 0; // CHECK-NEXT: [[# @LINE]]| 1| - // CHECK-NEXT: [[# @LINE]]| | - /* comment */ // CHECK-NEXT: [[# @LINE]]| | - // comment // CHECK-NEXT: [[# @LINE]]| | - /* comment */ // CHECK-NEXT: [[# @LINE]]| | - z = // CHECK-NEXT: [[# @LINE]]| 1| - x // comment // CHECK-NEXT: [[# @LINE]]| 1| - // comment // CHECK-NEXT: [[# @LINE]]| | - + /* // CHECK-NEXT: [[# @LINE]]| 1| - comment // CHECK-NEXT: [[# @LINE]]| | - */ // CHECK-NEXT: [[# @LINE]]| | - /* // CHECK-NEXT: [[# @LINE]]| | - comment // CHECK-NEXT: [[# @LINE]]| | - */y; // CHECK-NEXT: [[# @LINE]]| 1| - // CHECK-NEXT: [[# @LINE]]| | - // Comments inside directives. // CHECK-NEXT: [[# @LINE]]| | - #if 0 //comment // CHECK-NEXT: [[# @LINE]]| | - /* comment */ x = 0; // CHECK-NEXT: [[# @LINE]]| | - y = 0; /* comment */ // CHECK-NEXT: [[# @LINE]]| | - z = 0; // comment // CHECK-NEXT: [[# @LINE]]| | - // comment // CHECK-NEXT: [[# @LINE]]| | - // CHECK-NEXT: [[# @LINE]]| | - x = 0; /* // CHECK-NEXT: [[# @LINE]]| | - comment // CHECK-NEXT: [[# @LINE]]| | - */ // CHECK-NEXT: [[# @LINE]]| | - // CHECK-NEXT: [[# @LINE]]| | - /* // CHECK-NEXT: [[# @LINE]]| | - comment // CHECK-NEXT: [[# @LINE]]| | - */ x = 0; // CHECK-NEXT: [[# @LINE]]| | - // CHECK-NEXT: [[# @LINE]]| | - /* comment */ // CHECK-NEXT: [[# @LINE]]| | - // comment // CHECK-NEXT: [[# @LINE]]| | - /* comment */ // CHECK-NEXT: [[# @LINE]]| | - #endif // comment // CHECK-NEXT: [[# @LINE]]| | - #if 1 // comment // CHECK-NEXT: [[# @LINE]]| 1| - /* comment */ x = 0; // CHECK-NEXT: [[# @LINE]]| 1| - y = 0; /* comment */ // CHECK-NEXT: [[# @LINE]]| 1| - z = 0; // comment // CHECK-NEXT: [[# @LINE]]| 1| - // comment // CHECK-NEXT: [[# @LINE]]| | - // CHECK-NEXT: [[# @LINE]]| | - x = 0; /* // CHECK-NEXT: [[# @LINE]]| 1| - comment // CHECK-NEXT: [[# @LINE]]| | - */ // CHECK-NEXT: [[# @LINE]]| | - // CHECK-NEXT: [[# @LINE]]| | - /* // CHECK-NEXT: [[# @LINE]]| | - comment // CHECK-NEXT: [[# @LINE]]| | - */ x = 0; // CHECK-NEXT: [[# @LINE]]| 1| - // CHECK-NEXT: [[# @LINE]]| | - /* comment */ // CHECK-NEXT: [[# @LINE]]| | - // comment // CHECK-NEXT: [[# @LINE]]| | - /* comment */ // CHECK-NEXT: [[# @LINE]]| | - #endif //comment // CHECK-NEXT: [[# @LINE]]| 1| - return 0; // CHECK-NEXT: [[# @LINE]]| 1| -} // CHECK-NEXT: [[# @LINE]]| 1| diff --git a/compiler-rt/test/profile/instrprof-set-file-object-merging.c b/compiler-rt/test/profile/instrprof-set-file-object-merging.c index 35e9becf..0ca5f6f 100644 --- a/compiler-rt/test/profile/instrprof-set-file-object-merging.c +++ b/compiler-rt/test/profile/instrprof-set-file-object-merging.c @@ -34,7 +34,7 @@ int main(int argc, const char *argv[]) { // CHECK: 17| 2| // CHECK: 18| 2| FILE *F = fopen(argv[1], "r+b"); // CHECK: 19| 2| if (!F) { -// CHECK: 20| | // File might not exist, try opening with truncation +// CHECK: 20| 1| // File might not exist, try opening with truncation // CHECK: 21| 1| F = fopen(argv[1], "w+b"); // CHECK: 22| 1| } // CHECK: 23| 2| __llvm_profile_set_file_object(F, 1);