Linker: Add flag to override linkage rules
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>
Wed, 22 Apr 2015 04:11:00 +0000 (04:11 +0000)
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>
Wed, 22 Apr 2015 04:11:00 +0000 (04:11 +0000)
commite868123d8fd38a131d7f2c5fec7d71c1cdbb9b1e
tree95799068d62197f24a3a2d1f7d5a490fc5c209bb
parent0de129d42195bcc53ff8cf287d80a2b91c8cde16
Linker: Add flag to override linkage rules

Add a flag to lib/Linker (and `llvm-link`) to override linkage rules.
When set, the functions in the source module *always* replace those in
the destination module.

The `llvm-link` option is `-override=abc.ll`.  All the "regular" modules
are loaded and linked first, followed by the `-override` modules.  This
is useful for debugging workflows where some subset of the module (e.g.,
a single function) is extracted into a separate file where it's
optimized differently, before being merged back in.

Patch by Luqman Aden!

llvm-svn: 235473
llvm/include/llvm/Linker/Linker.h
llvm/lib/Linker/LinkModules.cpp
llvm/test/Linker/Inputs/override-different-linkage.ll [new file with mode: 0644]
llvm/test/Linker/Inputs/override-with-internal-linkage-2.ll [new file with mode: 0644]
llvm/test/Linker/Inputs/override-with-internal-linkage.ll [new file with mode: 0644]
llvm/test/Linker/Inputs/override.ll [new file with mode: 0644]
llvm/test/Linker/override-different-linkage.ll [new file with mode: 0644]
llvm/test/Linker/override-with-internal-linkage-2.ll [new file with mode: 0644]
llvm/test/Linker/override-with-internal-linkage.ll [new file with mode: 0644]
llvm/test/Linker/override.ll [new file with mode: 0644]
llvm/tools/llvm-link/llvm-link.cpp