@@ -126,12 +126,6 @@ static void addSwiftContractPass(const PassManagerBuilder &Builder,
126126 PM.add (createSwiftARCContractPass ());
127127}
128128
129- static void addSwiftMergeFunctionsPass (const PassManagerBuilder &Builder,
130- PassManagerBase &PM) {
131- if (Builder.OptLevel > 0 )
132- PM.add (createSwiftMergeFunctionsPass ());
133- }
134-
135129static void addAddressSanitizerPasses (const PassManagerBuilder &Builder,
136130 legacy::PassManagerBase &PM) {
137131 auto &BuilderWrapper =
@@ -249,9 +243,16 @@ void swift::performLLVMOptimizations(const IRGenOptions &Opts,
249243 PMBuilder.addExtension (PassManagerBuilder::EP_EnabledOnOptLevel0,
250244 addSanitizerCoveragePass);
251245 }
252- if (RunSwiftSpecificLLVMOptzns)
246+ if (RunSwiftSpecificLLVMOptzns) {
253247 PMBuilder.addExtension (PassManagerBuilder::EP_OptimizerLast,
254- addSwiftMergeFunctionsPass);
248+ [&](const PassManagerBuilder &Builder, PassManagerBase &PM) {
249+ if (Builder.OptLevel > 0 ) {
250+ const PointerAuthSchema &schema = Opts.PointerAuth .FunctionPointers ;
251+ unsigned key = (schema.isEnabled () ? schema.getKey () : 0 );
252+ PM.add (createSwiftMergeFunctionsPass (schema.isEnabled (), key));
253+ }
254+ });
255+ }
255256
256257 // Configure the function passes.
257258 legacy::FunctionPassManager FunctionPasses (Module);
0 commit comments