Maybe. I would like a second opinion on this one. The potential issue I see is that we are using compiler options during linking. Normally they are just ignored. Is it surprising if LTO starts using them?
Cheers, Rafael On 11 January 2016 at 06:47, James Molloy <james.mol...@arm.com> wrote: > jmolloy created this revision. > jmolloy added a reviewer: rafael. > jmolloy added a subscriber: cfe-commits. > jmolloy set the repository for this revision to rL LLVM. > Herald added a subscriber: joker.eph. > > The gold plugin can take LLVM options, but the syntax is confusing: > -Wl,-plugin-opt= or -Xlinker -plugin-opt=. > > Instead, pass -mllvm options through to Gold so the obvious syntax works. > > Repository: > rL LLVM > > http://reviews.llvm.org/D16056 > > Files: > lib/Driver/Tools.cpp > test/Driver/gold-lto.c > > Index: test/Driver/gold-lto.c > =================================================================== > --- test/Driver/gold-lto.c > +++ test/Driver/gold-lto.c > @@ -16,11 +16,14 @@ > // CHECK-X86-64-COREI7: "-plugin-opt=foo" > // > // RUN: %clang -target arm-unknown-linux -### %t.o -flto 2>&1 \ > -// RUN: -march=armv7a -Wl,-plugin-opt=foo -O0 \ > +// RUN: -march=armv7a -Wl,-plugin-opt=foo -O0 -mllvm -bar=baz \ > +// RUN: -mllvm -test-option \ > // RUN: | FileCheck %s --check-prefix=CHECK-ARM-V7A > // CHECK-ARM-V7A: "-plugin" "{{.*}}/LLVMgold.so" > // CHECK-ARM-V7A: "-plugin-opt=mcpu=cortex-a8" > // CHECK-ARM-V7A: "-plugin-opt=O0" > +// CHECK-ARM-V7A: "-plugin-opt=-bar=baz" > +// CHECK-ARM-V7A: "-plugin-opt=-test-option" > // CHECK-ARM-V7A: "-plugin-opt=foo" > // > // RUN: %clang -target i686-linux-android -### %t.o -flto 2>&1 \ > Index: lib/Driver/Tools.cpp > =================================================================== > --- lib/Driver/Tools.cpp > +++ lib/Driver/Tools.cpp > @@ -1817,6 +1817,12 @@ > > if (IsThinLTO) > CmdArgs.push_back("-plugin-opt=thinlto"); > + > + // Claim and pass through -mllvm options to the Gold plugin. > + for (const Arg *A : Args.filtered(options::OPT_mllvm)) { > + A->claim(); > + CmdArgs.push_back(Args.MakeArgString(Twine("-plugin-opt=") + > A->getValue(0))); > + } > } > > /// This is a helper function for validating the optional refinement step > > _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits