summaryrefslogtreecommitdiff
path: root/clang/lib/Driver/ToolChains/Cuda.cpp
diff options
context:
space:
mode:
authorFangrui Song <i@maskray.me>2023-05-17 12:43:49 -0700
committerFangrui Song <i@maskray.me>2023-05-17 12:43:49 -0700
commita07b135ce0c0111bd83450b5dc29ef0381cdbc39 (patch)
tree4c632a0822a1b54c9a1d4e086d68de49403a539d /clang/lib/Driver/ToolChains/Cuda.cpp
parent286cefcf35d0f55c57184c4219b95e82c96f1420 (diff)
downloadllvm-a07b135ce0c0111bd83450b5dc29ef0381cdbc39.tar.gz
[Driver][gcov] Derive .gcno .gcda file names from -o and -dumpdir
Resolve a FIXME. When -ftest-profile, -fprofile-arcs, or --coverage is specified and the driver performs both compilation and linking phases, derive the .gcno & .gcda file names from -o and -dumpdir. `clang --coverage d/a.c d/b.c -o e/x && e/x` will now emit `e/x-[ab].gc{no,da}` like GCC. For -fprofile-dir=, we make the deliberate decision to not mangle the input filename if relative. The following script demonstrates the .gcno and .gcda filenames. ``` PATH=/tmp/Rel/bin:$PATH # adapt according to your build directory mkdir -p d e f echo 'int main() {}' > d/a.c echo > d/b.c a() { rm $@ || exit 1; } clang --coverage d/a.c d/b.c && ./a.out a a-[ab].gc{no,da} clang --coverage d/a.c d/b.c -o e/x && e/x a e/x-[ab].gc{no,da} clang --coverage d/a.c d/b.c -o e/x -dumpdir f/ && e/x a f/[ab].gc{no,da} clang --coverage -fprofile-dir=f d/a.c d/b.c -o e/x && e/x a e/x-[ab].gcno f/e/x-[ab].gcda clang -c --coverage d/a.c d/b.c && clang --coverage a.o b.o && ./a.out a [ab].gc{no,da} clang -c --coverage -fprofile-dir=f d/a.c d/b.c && clang --coverage a.o b.o && ./a.out a [ab].gcno f/[ab].gcda clang -c --coverage d/a.c -o e/xa.o && clang --coverage e/xa.o && ./a.out a e/xa.gc{no,da} clang -c --coverage d/a.c -o e/xa.o -dumpdir f/g && clang --coverage e/xa.o && ./a.out a f/ga.gc{no,da} ``` The gcov code accidentally claims -c and -S, so -fsyntax-only -c/-S and -E -c/-S don't lead to a -Wunused-command-line-argument warning. Keep the unintended code for now.
Diffstat (limited to 'clang/lib/Driver/ToolChains/Cuda.cpp')
0 files changed, 0 insertions, 0 deletions