From 4096c58413ca18ae9a7b23ff9682362e6739f4cc Mon Sep 17 00:00:00 2001 From: Tommy McMichen Date: Thu, 7 Aug 2025 15:08:36 -0700 Subject: [PATCH 1/6] [CIR] Added missing argument handling for `-fclangir-idiom-recognizer` --- clang/lib/Driver/ToolChains/Clang.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index cc276a1551b0..3f0992b5a428 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -5099,6 +5099,10 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, if (Args.hasArg(options::OPT_fclangir_mem2reg)) CmdArgs.push_back("-fclangir-mem2reg"); + if (Args.hasArg(options::OPT_fclangir_idiom_recognizer, + options::OPT_fclangir_idiom_recognizer_EQ)) + 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)) { From f9355318ba7e7e702251ef048b52f3ba81fde8ce Mon Sep 17 00:00:00 2001 From: Tommy McMichen Date: Thu, 7 Aug 2025 15:08:01 -0700 Subject: [PATCH 2/6] [CIR] Added missing argument handling for `-fclangir-lib-opt` --- clang/lib/Driver/ToolChains/Clang.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 3f0992b5a428..981190924814 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -5109,6 +5109,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, if (!Args.hasArg(options::OPT_fclangir_idiom_recognizer, options::OPT_fclangir_idiom_recognizer_EQ)) CmdArgs.push_back("-fclangir-idiom-recognizer"); + CmdArgs.push_back("-fclangir-lib-opt"); } if (Args.hasArg(options::OPT_fclangir_analysis_only)) { From bfe8c5ec44ed36598af04b5783cff0b8f3941238 Mon Sep 17 00:00:00 2001 From: Tommy McMichen Date: Fri, 8 Aug 2025 09:28:43 -0700 Subject: [PATCH 3/6] [CIR][Driver] Added tests for `-fclangir-idiom-recognizer` and `-fclangir-lib-opt` --- clang/test/CIR/Driver/idiom-recognizer.cpp | 2 ++ clang/test/CIR/Driver/lib-opt.cpp | 2 ++ 2 files changed, 4 insertions(+) create mode 100644 clang/test/CIR/Driver/idiom-recognizer.cpp create mode 100644 clang/test/CIR/Driver/lib-opt.cpp 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..f7d9bd1209d8 --- /dev/null +++ b/clang/test/CIR/Driver/lib-opt.cpp @@ -0,0 +1,2 @@ +// RUN: %clang %s -fclangir-lib-opt -### -c %s 2>&1 | FileCheck --check-prefix=ENABLE %s +// ENABLE: "-fclangir-lib-opt" From a4fb46f2db16c347349b0cd53a2f38d322e7a7f9 Mon Sep 17 00:00:00 2001 From: Tommy McMichen Date: Fri, 8 Aug 2025 10:22:12 -0700 Subject: [PATCH 4/6] [CIR][Driver] Extended lib-opt test to check that idiom-recognizer is being enabled --- clang/test/CIR/Driver/lib-opt.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/clang/test/CIR/Driver/lib-opt.cpp b/clang/test/CIR/Driver/lib-opt.cpp index f7d9bd1209d8..c3685261261d 100644 --- a/clang/test/CIR/Driver/lib-opt.cpp +++ b/clang/test/CIR/Driver/lib-opt.cpp @@ -1,2 +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" From c00457247edf2c350e9e08db37b7892fc95fcbc3 Mon Sep 17 00:00:00 2001 From: Tommy McMichen Date: Tue, 12 Aug 2025 09:02:55 -0700 Subject: [PATCH 5/6] [CIR][Driver] Refactored shared check into a single boolean --- clang/lib/Driver/ToolChains/Clang.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 981190924814..42fa094ab569 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -5099,15 +5099,15 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, if (Args.hasArg(options::OPT_fclangir_mem2reg)) CmdArgs.push_back("-fclangir-mem2reg"); - if (Args.hasArg(options::OPT_fclangir_idiom_recognizer, - options::OPT_fclangir_idiom_recognizer_EQ)) + 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"); } From dbd6ac090aabd27d0ab7cb3acd7cafcc4ee304cf Mon Sep 17 00:00:00 2001 From: Tommy McMichen Date: Tue, 12 Aug 2025 09:57:03 -0700 Subject: [PATCH 6/6] [CIR][Driver] Formatted modified code --- clang/lib/Driver/ToolChains/Clang.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 42fa094ab569..3cec43fac233 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -5099,8 +5099,9 @@ 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); + 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");