diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index cc276a1551b0..3cec43fac233 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -5099,12 +5099,18 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, if (Args.hasArg(options::OPT_fclangir_mem2reg)) CmdArgs.push_back("-fclangir-mem2reg"); + bool enable_idiom_recognizer = + Args.hasArg(options::OPT_fclangir_idiom_recognizer, + options::OPT_fclangir_idiom_recognizer_EQ); + if (enable_idiom_recognizer) + CmdArgs.push_back("-fclangir-idiom-recognizer"); + // ClangIR lib opt requires idiom recognizer. if (Args.hasArg(options::OPT_fclangir_lib_opt, options::OPT_fclangir_lib_opt_EQ)) { - if (!Args.hasArg(options::OPT_fclangir_idiom_recognizer, - options::OPT_fclangir_idiom_recognizer_EQ)) + if (!enable_idiom_recognizer) CmdArgs.push_back("-fclangir-idiom-recognizer"); + CmdArgs.push_back("-fclangir-lib-opt"); } if (Args.hasArg(options::OPT_fclangir_analysis_only)) { diff --git a/clang/test/CIR/Driver/idiom-recognizer.cpp b/clang/test/CIR/Driver/idiom-recognizer.cpp new file mode 100644 index 000000000000..eebc7e6b747c --- /dev/null +++ b/clang/test/CIR/Driver/idiom-recognizer.cpp @@ -0,0 +1,2 @@ +// RUN: %clang %s -fclangir-idiom-recognizer -### -c %s 2>&1 | FileCheck --check-prefix=ENABLE %s +// ENABLE: "-fclangir-idiom-recognizer" diff --git a/clang/test/CIR/Driver/lib-opt.cpp b/clang/test/CIR/Driver/lib-opt.cpp new file mode 100644 index 000000000000..c3685261261d --- /dev/null +++ b/clang/test/CIR/Driver/lib-opt.cpp @@ -0,0 +1,3 @@ +// RUN: %clang %s -fclangir-lib-opt -### -c %s 2>&1 | FileCheck --check-prefix=ENABLE %s +// ENABLE: "-fclangir-lib-opt" +// ENABLE: "-fclangir-idiom-recognizer"