Enable -mergefunc-use-aliases
If the Rust LLVM fork is used, enable the -mergefunc-use-aliases flag, which will create aliases for merged functions, rather than inserting a call from one to the other. A number of codegen tests needed to be adjusted, because functions that previously fell below the thunk limit are now being merged. Merging is prevented either using -C no-prepopulate-passes, or by making the functions non-identical. I expect that this is going to break something, somewhere, because it isn't able to deal with aliases properly, but we won't find out until we try :) This fixes #52651.
This commit is contained in:
parent
0c1dc62c1e
commit
cbf748993f
8 changed files with 21 additions and 6 deletions
|
|
@ -1358,6 +1358,7 @@ extern "C" {
|
|||
pub fn LLVMRustDebugMetadataVersion() -> u32;
|
||||
pub fn LLVMRustVersionMajor() -> u32;
|
||||
pub fn LLVMRustVersionMinor() -> u32;
|
||||
pub fn LLVMRustIsRustLLVM() -> bool;
|
||||
|
||||
pub fn LLVMRustAddModuleFlag(M: &Module, name: *const c_char, value: u32);
|
||||
|
||||
|
|
|
|||
|
|
@ -70,6 +70,9 @@ unsafe fn configure_llvm(sess: &Session) {
|
|||
if sess.opts.debugging_opts.disable_instrumentation_preinliner {
|
||||
add("-disable-preinline");
|
||||
}
|
||||
if llvm::LLVMRustIsRustLLVM() {
|
||||
add("-mergefunc-use-aliases");
|
||||
}
|
||||
|
||||
for arg in &sess.opts.cg.llvm_args {
|
||||
add(&(*arg));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue