From aeb0fdff351b6142eef3db5ce5033bfcb1d093e6 Mon Sep 17 00:00:00 2001 From: Arthur Eubanks Date: Fri, 13 Nov 2020 18:34:34 -0800 Subject: [PATCH] [SimplifyCFG] Respect optforfuzzing in NPM pass Regression caused by refactoring in cdd006eec9409923f9a56b9026ce2cb72e7b71dc. See discussion in https://reviews.llvm.org/D89917. Reviewed By: arsenm, morehouse Differential Revision: https://reviews.llvm.org/D91473 --- llvm/lib/Transforms/Scalar/SimplifyCFGPass.cpp | 5 +++++ llvm/test/Transforms/SimplifyCFG/opt-for-fuzzing.ll | 1 + 2 files changed, 6 insertions(+) diff --git a/llvm/lib/Transforms/Scalar/SimplifyCFGPass.cpp b/llvm/lib/Transforms/Scalar/SimplifyCFGPass.cpp index 1798e017bfad..c36619211971 100644 --- a/llvm/lib/Transforms/Scalar/SimplifyCFGPass.cpp +++ b/llvm/lib/Transforms/Scalar/SimplifyCFGPass.cpp @@ -245,6 +245,11 @@ PreservedAnalyses SimplifyCFGPass::run(Function &F, FunctionAnalysisManager &AM) { auto &TTI = AM.getResult(F); Options.AC = &AM.getResult(F); + if (F.hasFnAttribute(Attribute::OptForFuzzing)) { + Options.setSimplifyCondBranch(false).setFoldTwoEntryPHINode(false); + } else { + Options.setSimplifyCondBranch(true).setFoldTwoEntryPHINode(true); + } if (!simplifyFunctionCFG(F, TTI, Options)) return PreservedAnalyses::all(); PreservedAnalyses PA; diff --git a/llvm/test/Transforms/SimplifyCFG/opt-for-fuzzing.ll b/llvm/test/Transforms/SimplifyCFG/opt-for-fuzzing.ll index 429f4a3f8544..4a0d9e884615 100644 --- a/llvm/test/Transforms/SimplifyCFG/opt-for-fuzzing.ll +++ b/llvm/test/Transforms/SimplifyCFG/opt-for-fuzzing.ll @@ -1,4 +1,5 @@ ; RUN: opt < %s -simplifycfg -S | FileCheck %s +; RUN: opt < %s -passes=simplifycfg -S | FileCheck %s define i32 @foo(i32 %x) optforfuzzing { entry: