diff options
author | Fangrui Song <i@maskray.me> | 2021-01-13 21:01:53 -0800 |
---|---|---|
committer | Fangrui Song <i@maskray.me> | 2021-01-13 21:01:53 -0800 |
commit | 53b34601abf1d48e8df210ab8127b16fd35e275a (patch) | |
tree | 2114633aa36750aa4ba4d1eaee709d14c57cba18 /clang/lib/Frontend/CompilerInvocation.cpp | |
parent | 3f98b66f23f9844a61f63ee00a81b9914f9a039d (diff) | |
download | llvm-53b34601abf1d48e8df210ab8127b16fd35e275a.zip llvm-53b34601abf1d48e8df210ab8127b16fd35e275a.tar.gz llvm-53b34601abf1d48e8df210ab8127b16fd35e275a.tar.bz2 |
[Driver] -gsplit-dwarf: Produce .dwo regardless of -gN for -fthinlto-index=
-g is an IR generation option while -gsplit-dwarf is an object file generation option.
For -gsplit-dwarf in the backend phase of a distributed ThinLTO (-fthinlto-index=) which does object file generation and no IR generation, -g should not be needed.
This patch makes `-fthinlto-index= -gsplit-dwarf` emit .dwo even in the absence of -g.
This should fix https://crbug.com/1158215 after D80391.
```
// Distributed ThinLTO usage
clang -g -O2 -c -flto=thin -fthin-link-bitcode=a.indexing.o a.c
clang -g -O2 -c -flto=thin -fthin-link-bitcode=b.indexing.o b.c
clang -fuse-ld=lld -Wl,--thinlto-index-only=a.rsp -Wl,--thinlto-prefix-replace=';lto/' -Wl,--thinlto-object-suffix-replace='.indexing.o;.o' a.indexing.o b.indexing.o
clang -gsplit-dwarf -O2 -c -fthinlto-index=lto/a.o.thinlto.bc a.o -o lto/a.o
clang -gsplit-dwarf -O2 -c -fthinlto-index=lto/b.o.thinlto.bc b.o -o lto/b.o
clang -fuse-ld=lld @a.rsp -o exe
```
Note: for implicit regular/Thin LTO, .dwo emission works without this patch:
`clang -flto=thin -gsplit-dwarf a.o b.o` passes `-plugin-opt=dwo_dir=` to the linker.
The linker forwards the option to LTO. LTOBackend.cpp emits `$dwo_dir/[01234].dwo`.
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D94647
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions