[PATCH] D29445: LTO: add a code-model flag
Martell Malone via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Feb 7 18:26:23 PST 2017
martell added a subscriber: rafael.
martell added a comment.
In https://reviews.llvm.org/D29445#670264, @pcc wrote:
> > I think I am missing something here. How does `Config->CodeModel = CMModel;` get all the way into the gold plugin for parsing. I had to add an option to `process_plugin_option` to pull out the string.
>
> In the gold plugin any options that the plugin does not recognize are passed through to `cl::ParseCommandLineOptions`, see http://llvm-cs.pcc.me.uk/tools/gold/gold-plugin.cpp#234
>
> > Is there something within `cl::opt` that has the magic to check the string against CMModel?
>
> Yes, any `cl::opt`s of enum type are checked during `ParseCommandLineOptions`. The command line library will produce an error message if the option string does not match any of the enumerators.
Great thanks for clearing that up @pcc
@rafael your message to the thread never ended up on phab, I didn't miss it though I added a gold testcase as you asked. The StringSwitch should not be necessary though if we use CommandFlags.
Using `CommandFlags.h` seems to create a conflict because it is included in `LTO.cpp` in lld also.
Ignoring the issue of `Target` being ambitious which is easily solved by specifying the `lld::elf` type, the link time error for duplicate symbols is not.
lib/liblldELF.a(LTO.cpp.o):(.bss._Z7ABINameB5cxx11+0x0): multiple definition of `ABIName[abi:cxx11]'
lib/liblldELF.a(Driver.cpp.o):(.bss._Z7ABINameB5cxx11+0x0): first defined here
What would be the suggested path here.
Moving `createLTO` into `Driver.cpp` does not seem like an ideal solution to me?
Repository:
rL LLVM
https://reviews.llvm.org/D29445
More information about the llvm-commits
mailing list