Skip to content

Commit a2fc322

Browse files
author
Jessica Paquette
committed
APPLE-INTERNAL: Revert INSTR_PROF_*_VERSION to 1400/1316/1300 format
For more details, read the comments on rdar://84254277. This revert is unfortunately very large. I've squashed everything together to make it easier to see what's going on. This will be the last time we have to do this though. :) To make the coverage format compatible, we need, in InstrProfData.inc: * `INSTR_PROF_RAW_VERSION 5` * `INSTR_PROF_INDEX_VERSION 7` * `INSTR_PROF_COVMAP_VERSION 4` Prior to this revert we have * `INSTR_PROF_RAW_VERSION 8` * `INSTR_PROF_INDEX_VERSION 8` * `INSTR_PROF_COVMAP_VERSION 5` So, this revert includes every commit which directly impacts these values *and* any changes in-between that * Refactor code significantly * Make assumptions about the new format. This might seem like a bit of a sledgehammer. However, say, avoiding reverting NFC refactors would introduce tricky merge conflicts. Fixing those merge conflicts is likely to introduce bugs. Testing: * `ninja check-all` does not exhibit any new failures with this change. * `llvm-profdata show` can handle raw profiles produced by building the LLVM test suite with clang-1316. Output is identical. * `llvm-profdata merge` handles raw profiles produced with the 1316 format on the LLVM test suite with the same output as the 1316 `llvm-profdata`. Conflicts: clang/include/clang/Basic/CodeGenOptions.h clang/include/clang/Driver/Options.td clang/lib/CodeGen/BackendUtil.cpp clang/lib/CodeGen/CoverageMappingGen.cpp clang/lib/Driver/ToolChains/Clang.cpp clang/test/CoverageMapping/abspath.cpp clang/test/Profile/profile-prefix-map.c compiler-rt/include/profile/MemProfData.inc compiler-rt/lib/memprof/memprof_rawprofile.cpp compiler-rt/lib/profile/InstrProfilingInternal.h compiler-rt/lib/profile/InstrProfilingPlatformLinux.c compiler-rt/test/profile/Darwin/instrprof-debug-info-correlate.c compiler-rt/test/profile/Linux/binary-id.c compiler-rt/test/profile/Linux/instrprof-debug-info-correlate.c llvm/docs/CommandGuide/llvm-profdata.rst llvm/include/llvm/ProfileData/Coverage/CoverageMappingReader.h llvm/include/llvm/ProfileData/InstrProfCorrelator.h llvm/include/llvm/ProfileData/MemProf.h llvm/include/llvm/ProfileData/MemProfData.inc llvm/include/llvm/ProfileData/RawMemProfReader.h llvm/lib/ProfileData/Coverage/CoverageMappingReader.cpp llvm/lib/ProfileData/InstrProf.cpp llvm/lib/ProfileData/InstrProfCorrelator.cpp llvm/lib/ProfileData/InstrProfReader.cpp llvm/lib/ProfileData/RawMemProfReader.cpp llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp llvm/lib/Transforms/Instrumentation/PGOInstrumentation.cpp llvm/test/Instrumentation/InstrProfiling/debug-info-correlate-coverage.ll llvm/test/Instrumentation/InstrProfiling/debug-info-correlate.ll llvm/test/Instrumentation/InstrProfiling/profiling.ll llvm/test/tools/llvm-profdata/Inputs/basic.memprofraw llvm/test/tools/llvm-profdata/Inputs/c-general.profraw llvm/test/tools/llvm-profdata/Inputs/multi.memprofraw llvm/test/tools/llvm-profdata/large-binary-id-size.test llvm/test/tools/llvm-profdata/malformed-not-space-for-another-header.test llvm/test/tools/llvm-profdata/malformed-num-counters-zero.test llvm/test/tools/llvm-profdata/malformed-ptr-to-counter-array.test llvm/test/tools/llvm-profdata/memprof-basic.test llvm/test/tools/llvm-profdata/memprof-multi.test llvm/unittests/ProfileData/CoverageMappingTest.cpp llvm/unittests/ProfileData/MemProfTest.cpp compiler-rt/lib/memprof/memprof_allocator.cpp Cherry-picks: * 703a0ea Revert "[Coverage] Store compilation dir separately in coverage mapping" New (non-revert, non-cherry-picked) changes: * Update icall-nocomdat.ll to work with old coverage format * Remove coverage mapping directory from `ScanAndUpdateArgs` * Update profiling.ll for old profiling/coverage format * Regenerate `coverage_prefix_map` test for old coverage format * CoverageFilenamesSectionWriter uses `ArrayRef<std::string>` for compatability with Swift's GenCoverage.cpp. Reverts: * 6dd6a61 [memprof] Deduplicate and outline frame storage in the memprof profile. * 14415a3 "Apply clang-tidy fixes for readability-redundant-smartptr-get in InstrProfReader.cpp (NFC)" * 0ca8ff4 "[llvm-profdata] Unify default cutoffs for detailed summary printing". * 27a4f25 "Reland "[memprof] Store callsite metadata with memprof records."" * f4b7944 "Revert "[memprof] Store callsite metadata with memprof records."" * 0d362c9 "[memprof] Store callsite metadata with memprof records." * 9c35303 "[InstrProf][NFC] Fix warning by removing typecast" * fc97efa "Cleanup includes: ProfileData" * b681799 "[instrprof] Rename the profile kind types to be more descriptive." * 0a41849 "Reland "[memprof] Extend the index prof format to include memory profiles."" * 19bdf44 "Revert "Reland "[memprof] Extend the index prof format to include memory profiles.""" * 807ba7a "Reland "[memprof] Extend the index prof format to include memory profiles."" * a3beb34 "Reland "[InstrProf] Make the IndexedInstrProf header backwards compatible."" * 9fd2cb2 "Revert "[InstrProf] Make the IndexedInstrProf header backwards compatible."" * 85355a5 "Revert "Reland "[memprof] Extend the index prof format to include memory profiles.""" * de54e4a "Reland "[memprof] Extend the index prof format to include memory profiles."" * 34a62f9 "[llvm-profdata] Fix use-after-move" * 0f73fb1 "Revert "[memprof] Extend the index prof format to include memory profiles."" * 43c2348 "[memprof] Extend the index prof format to include memory profiles." * 14cc41a "[InstrProf] Make the IndexedInstrProf header backwards compatible." * 216575e "Revert "Revert "[ProfileData] Read and symbolize raw memprof profiles.""" * dbf47d2 "Revert "[ProfileData] Read and symbolize raw memprof profiles."" * 26f978d "[ProfileData] Read and symbolize raw memprof profiles." * 14f4f63 "[memprof] Print out the summary in YAML format." * d2df8d5 "[instrprof][NFC] Templatize the instrprof iterator." * 7756b34 "[InstrProf][NFC] Remove stray option in InstrProfWriter" * 186dcd4 "[instrprof][NFC] Refactor out the common logic for getProfileKind." * eea002a "[InstrProf][NFC] Move function out of InstrProf.h" * 11d3074 "[InstrProf] Add single byte coverage mode" * 13d8947 "[InstrProf][NFC] Refactor Profile kind into a bitset enum." * c9baa56 "[InstrProf][Correlate] Verify debug info with llvm-profdata show" * 6d52391 "[InstrProf][Correlate] Improve error messages" * f170595 "[InstrProf][Correlator] Do not compress names when reading debug info" * ccb09a4 "Fix broken comment in InstrProfData.inc" * 88d8177 "[InstrProf] Restore InstrProfData.inc to fix Fuchsia builds" * f214737 "[InstrProf][NFC] Do not assume size of counter type" * 4ecf15b "[llvm-profdata] Make -debug-info visible" * ac719d7 "[InstrProf] Don't profile merge by default in lightweight mode" * 65d7fd0 "[Try2][InstrProf] Add Correlator class to read debug info" * bdc68ee "Revert "[InstrProf] Add Correlator class to read debug info"" * 95946d2 "[InstrProf] Add Correlator class to read debug info" * 58d9c1a "[Try2][InstrProf] Attach debug info to counters" * c809da7 "Revert "[InstrProf] Attach debug info to counters"" * 800bf8e "[InstrProf] Attach debug info to counters" * 7cca33b "[memprof] Extend llvm-profdata to display MemProf profile summaries." * 24c615f "[InstrProfData] Bump the raw profile version to 8" * ee88b8d "[compiler-rt] Add more diagnostic to InstrProfError" * 743f78e "[InstrProfiling] Fix warnings when building for Windows" * a1532ed "[InstrProfiling] Make CountersPtr in __profd_ relative" * b9f547e "[llvm][profile] Add padding after binary IDs" * 1df7289 "[compiler-rt/profile] Include __llvm_profile_get_magic in module signature" * 83302c8 "[profile] Fix profile merging with binary IDs" * c579c65 "[compiler-rt][profile] Make corrupted-profile.c more robust" * f984ac2 "[profile] Add binary id into profiles" * f0a616efa42b33cd280d5a45c3c2e3aabe278bb5 "Revert "[llvm-profdata] Fix use-after-move"" * 4578233ce8250c206bb342e85632b1d2969039c5 "Revert "[instrprof][NFC] Templatize the instrprof iterator."" * e8d4a36dc9ea5719c3bea227d3fde15a005f7443 "Revert "[llvm-profdata] Unify default cutoffs for detailed summary printing"" * 440d971 "Work around non-existence of ElfW(type) macro on FreeBSD" * 8306968 "[memprof] Move the meminfo block struct to MemProfData.inc." * a2ce97c "[memprof] Fix unit test build after refactoring shared header." * f89319b "Reland "[memprof] Refactor out the MemInfoBlock into a macro based def.""
1 parent 0d85470 commit a2fc322

File tree

141 files changed

+897
-6005
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

141 files changed

+897
-6005
lines changed

clang/include/clang/Basic/CodeGenOptions.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -170,9 +170,6 @@ class CodeGenOptions : public CodeGenOptionsBase {
170170
/// The string to embed in debug information as the current working directory.
171171
std::string DebugCompilationDir;
172172

173-
/// The string to embed in coverage mapping as the current working directory.
174-
std::string CoverageCompilationDir;
175-
176173
/// The string to embed in the debug information for the compile unit, if
177174
/// non-empty.
178175
std::string DwarfDebugFlags;

clang/include/clang/Driver/Options.td

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1246,10 +1246,6 @@ def fdebug_compilation_dir_EQ : Joined<["-"], "fdebug-compilation-dir=">,
12461246
def fdebug_compilation_dir : Separate<["-"], "fdebug-compilation-dir">,
12471247
Group<f_Group>, Flags<[CC1Option, CC1AsOption, CoreOption]>,
12481248
Alias<fdebug_compilation_dir_EQ>;
1249-
def fcoverage_compilation_dir_EQ : Joined<["-"], "fcoverage-compilation-dir=">,
1250-
Group<f_Group>, Flags<[CC1Option, CC1AsOption, CoreOption]>,
1251-
HelpText<"The compilation directory to embed in the coverage mapping.">,
1252-
MarshallingInfoString<CodeGenOpts<"CoverageCompilationDir">>;
12531249
def ffile_compilation_dir_EQ : Joined<["-"], "ffile-compilation-dir=">, Group<f_Group>,
12541250
Flags<[CoreOption]>,
12551251
HelpText<"The compilation directory to embed in the debug info and coverage mapping.">;

clang/lib/CodeGen/BackendUtil.cpp

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -96,16 +96,10 @@ using namespace llvm;
9696
llvm::PassPluginLibraryInfo get##Ext##PluginInfo();
9797
#include "llvm/Support/Extension.def"
9898

99-
namespace llvm {
100-
extern cl::opt<bool> DebugInfoCorrelate;
101-
}
102-
10399
namespace {
104100

105101
// Default filename used for profile generation.
106-
std::string getDefaultProfileGenName() {
107-
return DebugInfoCorrelate ? "default_%p.proflite" : "default_%m.profraw";
108-
}
102+
static constexpr StringLiteral DefaultProfileGenName = "default_%m.profraw";
109103

110104
class EmitAssemblyHelper {
111105
DiagnosticsEngine &Diags;
@@ -707,7 +701,7 @@ void EmitAssemblyHelper::RunOptimizationPipeline(
707701
if (CodeGenOpts.hasProfileIRInstr())
708702
// -fprofile-generate.
709703
PGOOpt = PGOOptions(CodeGenOpts.InstrProfileOutput.empty()
710-
? getDefaultProfileGenName()
704+
? std::string(DefaultProfileGenName)
711705
: CodeGenOpts.InstrProfileOutput,
712706
"", "", PGOOptions::IRInstr, PGOOptions::NoCSAction,
713707
CodeGenOpts.DebugInfoForProfiling);
@@ -745,13 +739,13 @@ void EmitAssemblyHelper::RunOptimizationPipeline(
745739
"Cannot run CSProfileGen pass with ProfileGen or SampleUse "
746740
" pass");
747741
PGOOpt->CSProfileGenFile = CodeGenOpts.InstrProfileOutput.empty()
748-
? getDefaultProfileGenName()
742+
? std::string(DefaultProfileGenName)
749743
: CodeGenOpts.InstrProfileOutput;
750744
PGOOpt->CSAction = PGOOptions::CSIRInstr;
751745
} else
752746
PGOOpt = PGOOptions("",
753747
CodeGenOpts.InstrProfileOutput.empty()
754-
? getDefaultProfileGenName()
748+
? std::string(DefaultProfileGenName)
755749
: CodeGenOpts.InstrProfileOutput,
756750
"", PGOOptions::NoAction, PGOOptions::CSIRInstr,
757751
CodeGenOpts.DebugInfoForProfiling);

clang/lib/CodeGen/CoverageMappingGen.cpp

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1561,17 +1561,9 @@ CoverageMappingModuleGen::CoverageMappingModuleGen(
15611561
CoveragePrefixMap = CGM.getCodeGenOpts().CoveragePrefixMap;
15621562
}
15631563

1564-
std::string CoverageMappingModuleGen::getCurrentDirname() {
1565-
if (!CGM.getCodeGenOpts().CoverageCompilationDir.empty())
1566-
return CGM.getCodeGenOpts().CoverageCompilationDir;
1567-
1568-
SmallString<256> CWD;
1569-
llvm::sys::fs::current_path(CWD);
1570-
return CWD.str().str();
1571-
}
1572-
15731564
std::string CoverageMappingModuleGen::normalizeFilename(StringRef Filename) {
15741565
llvm::SmallString<256> Path(Filename);
1566+
llvm::sys::fs::make_absolute(Path);
15751567
llvm::sys::path::remove_dots(Path, /*remove_dot_dot=*/true);
15761568
for (const auto &Entry : CoveragePrefixMap) {
15771569
if (llvm::sys::path::replace_path_prefix(Path, Entry.first, Entry.second))
@@ -1652,17 +1644,18 @@ void CoverageMappingModuleGen::addFunctionMappingRecord(
16521644
// also processed by the CoverageMappingWriter which performs
16531645
// additional minimization operations such as reducing the number of
16541646
// expressions.
1655-
llvm::SmallVector<std::string, 16> FilenameStrs;
16561647
std::vector<StringRef> Filenames;
16571648
std::vector<CounterExpression> Expressions;
16581649
std::vector<CounterMappingRegion> Regions;
1659-
FilenameStrs.resize(FileEntries.size() + 1);
1660-
FilenameStrs[0] = normalizeFilename(getCurrentDirname());
1650+
llvm::SmallVector<std::string, 16> FilenameStrs;
1651+
llvm::SmallVector<StringRef, 16> FilenameRefs;
1652+
FilenameStrs.resize(FileEntries.size());
1653+
FilenameRefs.resize(FileEntries.size());
16611654
for (const auto &Entry : FileEntries) {
16621655
auto I = Entry.second;
16631656
FilenameStrs[I] = normalizeFilename(Entry.first->getName());
1657+
FilenameRefs[I] = FilenameStrs[I];
16641658
}
1665-
ArrayRef<std::string> FilenameRefs = llvm::makeArrayRef(FilenameStrs);
16661659
RawCoverageMappingReader Reader(CoverageMapping, FilenameRefs, Filenames,
16671660
Expressions, Regions);
16681661
if (Reader.read())
@@ -1679,17 +1672,20 @@ void CoverageMappingModuleGen::emit() {
16791672

16801673
// Create the filenames and merge them with coverage mappings
16811674
llvm::SmallVector<std::string, 16> FilenameStrs;
1682-
FilenameStrs.resize(FileEntries.size() + 1);
1683-
// The first filename is the current working directory.
1684-
FilenameStrs[0] = normalizeFilename(getCurrentDirname());
1675+
llvm::SmallVector<StringRef, 16> FilenameRefs;
1676+
FilenameStrs.resize(FileEntries.size());
1677+
FilenameRefs.resize(FileEntries.size());
16851678
for (const auto &Entry : FileEntries) {
16861679
auto I = Entry.second;
16871680
FilenameStrs[I] = normalizeFilename(Entry.first->getName());
1681+
FilenameRefs[I] = FilenameStrs[I];
16881682
}
16891683

16901684
std::string Filenames;
16911685
{
16921686
llvm::raw_string_ostream OS(Filenames);
1687+
// APPLE-INTERNAL: Using FilenameStrs for compatability with Swift's
1688+
// GenCoverage.cpp.
16931689
CoverageFilenamesSectionWriter(FilenameStrs).write(OS);
16941690
}
16951691
auto *FilenamesVal =
@@ -1748,7 +1744,7 @@ unsigned CoverageMappingModuleGen::getFileID(const FileEntry *File) {
17481744
auto It = FileEntries.find(File);
17491745
if (It != FileEntries.end())
17501746
return It->second;
1751-
unsigned FileID = FileEntries.size() + 1;
1747+
unsigned FileID = FileEntries.size();
17521748
FileEntries.insert(std::make_pair(File, FileID));
17531749
return FileID;
17541750
}

clang/lib/CodeGen/CoverageMappingGen.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,6 @@ class CoverageMappingModuleGen {
9595
std::vector<FunctionInfo> FunctionRecords;
9696
std::map<std::string, std::string> CoveragePrefixMap;
9797

98-
std::string getCurrentDirname();
9998
std::string normalizeFilename(StringRef Filename);
10099

101100
/// Emit a function record.

clang/lib/Driver/ToolChains/Clang.cpp

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -900,18 +900,6 @@ static void addPGOAndCoverageFlags(const ToolChain &TC, Compilation &C,
900900
CmdArgs.push_back("-fcoverage-mapping");
901901
}
902902

903-
if (Arg *A = Args.getLastArg(options::OPT_ffile_compilation_dir_EQ,
904-
options::OPT_fcoverage_compilation_dir_EQ)) {
905-
if (A->getOption().matches(options::OPT_ffile_compilation_dir_EQ))
906-
CmdArgs.push_back(Args.MakeArgString(
907-
Twine("-fcoverage-compilation-dir=") + A->getValue()));
908-
else
909-
A->render(Args, CmdArgs);
910-
} else if (llvm::ErrorOr<std::string> CWD =
911-
D.getVFS().getCurrentWorkingDirectory()) {
912-
CmdArgs.push_back(Args.MakeArgString("-fcoverage-compilation-dir=" + *CWD));
913-
}
914-
915903
if (Args.hasArg(options::OPT_fprofile_exclude_files_EQ)) {
916904
auto *Arg = Args.getLastArg(options::OPT_fprofile_exclude_files_EQ);
917905
if (!Args.hasArg(options::OPT_coverage))

clang/lib/Tooling/DependencyScanning/ScanAndUpdateArgs.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,6 @@ static void updateCompilerInvocation(CompilerInvocation &Invocation,
191191
// Code generation options.
192192
auto &CodeGenOpts = Invocation.getCodeGenOpts();
193193
Mapper.mapInPlaceOrClear(CodeGenOpts.DebugCompilationDir);
194-
Mapper.mapInPlaceOrClear(CodeGenOpts.CoverageCompilationDir);
195194
}
196195

197196
Expected<llvm::cas::CASID> clang::scanAndUpdateCC1InlineWithTool(

clang/test/CodeGen/coverage-compilation-dir.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
// XFAIL: *
2+
// See rdar://82543962.
3+
//
14
// RUN: mkdir -p %t.dir && cd %t.dir
25
// RUN: cp %s rel.c
36
// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-compilation-dir=/nonsense -fcoverage-mapping -emit-llvm -mllvm -enable-name-compression=false rel.c -o - | FileCheck -check-prefix=CHECK-NONSENSE %s
Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,15 @@
11
// RUN: %clang_cc1 -mllvm -emptyline-comment-coverage=false -fprofile-instrument=clang -fcoverage-mapping -mllvm -enable-name-compression=false -emit-llvm -main-file-name abspath.cpp %S/Inputs/../abspath.cpp -o - | FileCheck -check-prefix=RMDOTS %s
22

3-
// RMDOTS: @__llvm_coverage_mapping = {{.*}}"\02
3+
// RMDOTS: @__llvm_coverage_mapping = {{.*}}"\01
44
// RMDOTS-NOT: Inputs
55
// RMDOTS: "
66

77
// RUN: mkdir -p %t/test && cd %t/test
88
// RUN: echo "void f1(void) {}" > f1.c
9-
// RUN: %clang_cc1 -mllvm -emptyline-comment-coverage=false -fprofile-instrument=clang -fcoverage-mapping -mllvm -enable-name-compression=false -emit-llvm -main-file-name abspath.cpp %t/test/f1.c -o - | FileCheck -check-prefix=ABSPATH %s
9+
// RUN: %clang_cc1 -mllvm -emptyline-comment-coverage=false -fprofile-instrument=clang -fcoverage-mapping -mllvm -enable-name-compression=false -emit-llvm -main-file-name abspath.cpp ../test/f1.c -o - | FileCheck -check-prefix=RELPATH %s
1010

11-
// RELPATH: @__llvm_coverage_mapping = {{.*}}"\02
12-
// RELPATH: {{..(/|\\\\)test(/|\\\\)f1}}.c
11+
// RELPATH: @__llvm_coverage_mapping = {{.*}}"\01
12+
// RELPATH: {{[/\\].*(/|\\\\)test(/|\\\\)f1}}.c
1313
// RELPATH: "
1414

15-
// ABSPATH: @__llvm_coverage_mapping = {{.*}}"\02
16-
// ABSPATH: {{[/\\].*(/|\\\\)test(/|\\\\)f1}}.c
17-
// ABSPATH: "
18-
1915
void f1(void) {}

clang/test/Driver/clang_f_opts.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -522,10 +522,11 @@
522522
// CHECK-DEBUG-COMPILATION-DIR: "-fdebug-compilation-dir=."
523523
// CHECK-DEBUG-COMPILATION-DIR-NOT: "-ffile-compilation-dir=."
524524

525-
// RUN: %clang -### -S -fprofile-instr-generate -fcoverage-compilation-dir=. %s 2>&1 | FileCheck -check-prefix=CHECK-COVERAGE-COMPILATION-DIR %s
526-
// RUN: %clang -### -S -fprofile-instr-generate -ffile-compilation-dir=. %s 2>&1 | FileCheck -check-prefix=CHECK-COVERAGE-COMPILATION-DIR %s
527-
// CHECK-COVERAGE-COMPILATION-DIR: "-fcoverage-compilation-dir=."
528-
// CHECK-COVERAGE-COMPILATION-DIR-NOT: "-ffile-compilation-dir=."
525+
// See rdar://82543962.
526+
// XXX: %clang -### -S -fprofile-instr-generate -fcoverage-compilation-dir=. %s 2>&1 | FileCheck -check-prefix=CHECK-COVERAGE-COMPILATION-DIR %s
527+
// XXX: %clang -### -S -fprofile-instr-generate -ffile-compilation-dir=. %s 2>&1 | FileCheck -check-prefix=CHECK-COVERAGE-COMPILATION-DIR %s
528+
// XXX-COVERAGE-COMPILATION-DIR: "-fcoverage-compilation-dir=."
529+
// XXX-COVERAGE-COMPILATION-DIR-NOT: "-ffile-compilation-dir=."
529530

530531
// RUN: %clang -### -S -fdiscard-value-names %s 2>&1 | FileCheck -check-prefix=CHECK-DISCARD-NAMES %s
531532
// RUN: %clang -### -S -fno-discard-value-names %s 2>&1 | FileCheck -check-prefix=CHECK-NO-DISCARD-NAMES %s

0 commit comments

Comments
 (0)