From 1e2e89b26fa27f51c4ae85e59dd081e352bf8f7c Mon Sep 17 00:00:00 2001 From: Thomas Lively Date: Wed, 19 Apr 2023 16:56:42 -0700 Subject: Disable sign extension in SignExtLowering.cpp (#5676) * Disable sign extension in SignExtLowering.cpp The sign extension lowering pass would previously lower away the sign extension instructions, but it wouldn't disable the sign extension feature, so follow-on passes such as optimize-instructions could reintroduce sign extension instructions. Fix the pass to disable the sign extension feature to prevent sign extension instructions from being reintroduced later. * update pass description --- src/passes/SignExtLowering.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/passes/SignExtLowering.cpp') diff --git a/src/passes/SignExtLowering.cpp b/src/passes/SignExtLowering.cpp index 7d03046ea..beb36494f 100644 --- a/src/passes/SignExtLowering.cpp +++ b/src/passes/SignExtLowering.cpp @@ -68,6 +68,14 @@ struct SignExtLowering : public WalkerPass> { } } } + + void run(Module* module) override { + if (!module->features.has(FeatureSet::SignExt)) { + return; + } + super::run(module); + module->features.disable(FeatureSet::SignExt); + } }; Pass* createSignExtLoweringPass() { return new SignExtLowering(); } -- cgit v1.2.3