about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/librustc/back/link.rs7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/librustc/back/link.rs b/src/librustc/back/link.rs
index 7c2b0ba6168..9ce0e3a3357 100644
--- a/src/librustc/back/link.rs
+++ b/src/librustc/back/link.rs
@@ -536,6 +536,13 @@ pub mod write {
         llvm::LLVMPassManagerBuilderPopulateFunctionPassManager(builder, fpm);
         llvm::LLVMPassManagerBuilderPopulateModulePassManager(builder, mpm);
         llvm::LLVMPassManagerBuilderDispose(builder);
+
+        match opt {
+            llvm::CodeGenLevelDefault | llvm::CodeGenLevelAggressive => {
+                "mergefunc".with_c_str(|s| llvm::LLVMRustAddPass(mpm, s));
+            }
+            _ => {}
+        };
     }
 }