[LLVMgold.so] -plugin-opt=save-temps: save combined module to .lto.o instead of .o
authorFangrui Song <i@maskray.me>
Mon, 20 Jul 2020 16:58:31 +0000 (09:58 -0700)
committerFangrui Song <i@maskray.me>
Mon, 20 Jul 2020 17:02:56 +0000 (10:02 -0700)
commit55fa315b0352b63454206600d6803fafacb42d5e
tree1b94450f20d43f5c9621de8586478c6bb937d868
parent2875df0d56572168b478f80f59106284ef15d87d
[LLVMgold.so] -plugin-opt=save-temps: save combined module to .lto.o instead of .o

This matches LLD and fixes https://sourceware.org/bugzilla/show_bug.cgi?id=26262#c1

.o is a bad choice for save-temps output because it is easy to override the bitcode file (*.o)

```
 # Use bfd for the example, -fuse-ld=gold is similar.
clang -flto -c a.c  # generate bitcode file a.o
clang -fuse-ld=bfd -flto a.o -o a -Wl,-plugin-opt=save-temps  # override a.o

 # The user repeats the command but get surprised, because a.o is now a combined module.
clang -fuse-ld=bfd -flto a.o -o a -Wl,-plugin-opt=save-temps
```

Reviewed By: tejohnson

Differential Revision: https://reviews.llvm.org/D84132
llvm/test/tools/gold/X86/parallel.ll
llvm/test/tools/gold/X86/relocation-model-pic.ll
llvm/test/tools/gold/X86/thinlto.ll
llvm/tools/gold/gold-plugin.cpp