sil-opt: Add flag to disable aggressive reg2mem mode

This commit is contained in:
Yuta Saito
2025-11-15 12:12:46 +00:00
parent 3e0ea3ac68
commit 32aa4d9aed

View File

@@ -593,6 +593,11 @@ struct SILOptOptions {
"enable-address-dependencies", "enable-address-dependencies",
llvm::cl::desc("Enable enforcement of lifetime dependencies on addressable values.")); llvm::cl::desc("Enable enforcement of lifetime dependencies on addressable values."));
llvm::cl::opt<bool> DisaleAggressiveReg2Mem = llvm::cl::opt<bool>(
"disable-aggressive-reg2mem",
llvm::cl::desc("Disable aggressive reg2mem optimizations."),
llvm::cl::init(false));
llvm::cl::opt<bool> EnableCalleeAllocatedCoroAbi = llvm::cl::opt<bool>( llvm::cl::opt<bool> EnableCalleeAllocatedCoroAbi = llvm::cl::opt<bool>(
"enable-callee-allocated-coro-abi", "enable-callee-allocated-coro-abi",
llvm::cl::desc("Override per-platform settings and use yield_once_2."), llvm::cl::desc("Override per-platform settings and use yield_once_2."),
@@ -921,6 +926,8 @@ int sil_opt_main(ArrayRef<const char *> argv, void *MainAddr) {
options.EnablePackMetadataStackPromotion; options.EnablePackMetadataStackPromotion;
SILOpts.EnableAddressDependencies = options.EnableAddressDependencies; SILOpts.EnableAddressDependencies = options.EnableAddressDependencies;
if (options.DisaleAggressiveReg2Mem)
SILOpts.UseAggressiveReg2MemForCodeSize = false;
if (options.EnableCalleeAllocatedCoroAbi) if (options.EnableCalleeAllocatedCoroAbi)
SILOpts.CoroutineAccessorsUseYieldOnce2 = true; SILOpts.CoroutineAccessorsUseYieldOnce2 = true;
if (options.DisableCalleeAllocatedCoroAbi) if (options.DisableCalleeAllocatedCoroAbi)