@@ -126,12 +126,6 @@ static void addSwiftContractPass(const PassManagerBuilder &Builder,
126
126
PM.add (createSwiftARCContractPass ());
127
127
}
128
128
129
- static void addSwiftMergeFunctionsPass (const PassManagerBuilder &Builder,
130
- PassManagerBase &PM) {
131
- if (Builder.OptLevel > 0 )
132
- PM.add (createSwiftMergeFunctionsPass ());
133
- }
134
-
135
129
static void addAddressSanitizerPasses (const PassManagerBuilder &Builder,
136
130
legacy::PassManagerBase &PM) {
137
131
auto &BuilderWrapper =
@@ -249,9 +243,16 @@ void swift::performLLVMOptimizations(const IRGenOptions &Opts,
249
243
PMBuilder.addExtension (PassManagerBuilder::EP_EnabledOnOptLevel0,
250
244
addSanitizerCoveragePass);
251
245
}
252
- if (RunSwiftSpecificLLVMOptzns)
246
+ if (RunSwiftSpecificLLVMOptzns) {
253
247
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
+ }
255
256
256
257
// Configure the function passes.
257
258
legacy::FunctionPassManager FunctionPasses (Module);
0 commit comments