https://github.com/yus3710-fj created 
https://github.com/llvm/llvm-project/pull/211724

This reapplies #207658.

Some targets do not support flang_rt or clang_rt.
It seems difficult to create a blocklist, so the tests are now configured to 
explicitly specify the known-working targets.
The specified targets are extracted from tests in flang/test/Driver.

-----
The original commit message:
This patch intends to clarify the current behaviors, not to state the 
expected/desirable behaviors.

>From 1a4bd47223cf1e5bb9747c3528bbcfd3d55dde33 Mon Sep 17 00:00:00 2001
From: Yusuke MINATO <[email protected]>
Date: Fri, 24 Jul 2026 09:27:36 +0900
Subject: [PATCH 1/2] Reapply "[NFC][clang][Driver] Add tests for
 --driver-mode=flang"

This reverts commit 94404723f0dff00d07bd13d2f420b953d57a6db4.
---
 .../Driver/flang/multiple-inputs-mixed.f90    | 22 +++++++++++++++++++
 clang/test/Driver/flang/runtimes.f90          |  8 +++++++
 2 files changed, 30 insertions(+)
 create mode 100644 clang/test/Driver/flang/runtimes.f90

diff --git a/clang/test/Driver/flang/multiple-inputs-mixed.f90 
b/clang/test/Driver/flang/multiple-inputs-mixed.f90
index 98d8cab00bdfd..f6910f3dd9997 100644
--- a/clang/test/Driver/flang/multiple-inputs-mixed.f90
+++ b/clang/test/Driver/flang/multiple-inputs-mixed.f90
@@ -5,3 +5,25 @@
 ! CHECK-SYNTAX-ONLY: "{{[^"]*}}/Inputs/one.f90"
 ! CHECK-SYNTAX-ONLY-LABEL: "{{[^"]*}}clang{{[^"/]*}}" "-cc1"
 ! CHECK-SYNTAX-ONLY: "{{[^"]*}}/Inputs/other.c"
+
+! Check that flang-only options are not passed to clang.
+! RUN: %clang --driver-mode=flang -### -fstack-arrays %S/Inputs/one.f90 
%S/Inputs/other.c 2>&1 | FileCheck --check-prefixes=CHECK-FLANG-OPT %s
+! CHECK-FLANG-OPT-LABEL: "{{[^"]*}}flang{{[^"/]*}}" "-fc1"
+! CHECK-FLANG-OPT: "-fstack-arrays"
+! CHECK-FLANG-OPT-LABEL: "{{[^"]*}}clang{{[^"/]*}}" "-cc1"
+! CHECK-FLANG-OPT-NOT: "-fstack-arrays"
+
+! The -std= option is accepted by both clang and flang, but its acceptable 
values differ between the two.
+! Currently, -std=c17 is passed to flang, which rejects it. This should be 
fixed in the future.
+! A potential solution is to use -Xflang and -Xclang to pass the option to the 
right frontend; however, -Xclang is rejected.
+
+! RUN: %clang --driver-mode=flang -### -std=f2018 %S/Inputs/one.f90 -std=c17 
%S/Inputs/other.c 2>&1 | FileCheck --check-prefixes=MIXED-OPT %s
+! MIXED-OPT-LABEL: "{{[^"]*}}flang{{[^"/]*}}" "-fc1"
+! MIXED-OPT: "-std=f2018"
+! MIXED-OPT: "-std=c17"
+! MIXED-OPT-LABEL: "{{[^"]*}}clang{{[^"/]*}}" "-cc1"
+! MIXED-OPT-NOT: "-std=f2018"
+! MIXED-OPT: "-std=c17"
+
+! RUN: not %clang --driver-mode=flang -### -Xflang -std=f2018 
%S/Inputs/one.f90 -Xclang -std=c17 %S/Inputs/other.c 2>&1 | FileCheck 
--check-prefixes=SEPARATE-MIXED-OPT %s
+! SEPARATE-MIXED-OPT: error: unknown argument '-Xclang'
diff --git a/clang/test/Driver/flang/runtimes.f90 
b/clang/test/Driver/flang/runtimes.f90
new file mode 100644
index 0000000000000..b979a86c2f7c6
--- /dev/null
+++ b/clang/test/Driver/flang/runtimes.f90
@@ -0,0 +1,8 @@
+! Check that Flang runtimes are passed to the linker in --driver-mode=flang.
+
+! RUN: %clang --driver-mode=flang --rtlib=compiler-rt -### %s 2>&1 | FileCheck 
%s
+! CHECK-DAG: clang_rt.{{[^ "]}}
+! CHECK-DAG: flang_rt.{{[^ "]}}
+
+! RUN: not %clang --driver-mode=flang -stdlib=libc++ -### %s 2>&1 | FileCheck 
--check-prefix=LIBCXX %s
+! LIBCXX: error: unknown argument: '-stdlib=libc++'

>From a6c207c00182140d76d0eaa3044f5881f7248da4 Mon Sep 17 00:00:00 2001
From: Yusuke MINATO <[email protected]>
Date: Fri, 24 Jul 2026 13:28:07 +0900
Subject: [PATCH 2/2] Specify supported targets for the tests explicitly

Some targets do not support flang_rt or clang_rt.
It seems difficult to create a blocklist, so the tests are now
configured to explicitly specify the known-working targets.
The specified targets are extracted from tests in flang/test/Driver.
---
 clang/test/Driver/flang/runtimes.f90 | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

diff --git a/clang/test/Driver/flang/runtimes.f90 
b/clang/test/Driver/flang/runtimes.f90
index b979a86c2f7c6..c2544dbb82c76 100644
--- a/clang/test/Driver/flang/runtimes.f90
+++ b/clang/test/Driver/flang/runtimes.f90
@@ -1,8 +1,19 @@
 ! Check that Flang runtimes are passed to the linker in --driver-mode=flang.
 
-! RUN: %clang --driver-mode=flang --rtlib=compiler-rt -### %s 2>&1 | FileCheck 
%s
-! CHECK-DAG: clang_rt.{{[^ "]}}
-! CHECK-DAG: flang_rt.{{[^ "]}}
+! RUN: %clang --driver-mode=flang --rtlib=compiler-rt 
--target=x86_64-linux-gnu -### %s 2>&1 | FileCheck %s 
--check-prefixes=FLANG-RT,CLANG-RT
+! RUN: %clang --driver-mode=flang --rtlib=compiler-rt --target=i686-linux-musl 
-### %s 2>&1 | FileCheck %s --check-prefixes=FLANG-RT,CLANG-RT
+! RUN: %clang --driver-mode=flang --rtlib=compiler-rt 
--target=x86_64-pc-windows-msvc -### %s 2>&1 | FileCheck %s 
--check-prefixes=FLANG-RT,CLANG-RT
+! RUN: %clang --driver-mode=flang --rtlib=compiler-rt 
--target=x86_64-windows-gnu -### %s 2>&1 | FileCheck %s 
--check-prefixes=FLANG-RT,CLANG-RT
+! RUN: %clang --driver-mode=flang --rtlib=compiler-rt 
--target=aarch64-linux-none -### %s 2>&1 | FileCheck %s 
--check-prefixes=FLANG-RT,CLANG-RT
+! RUN: %clang --driver-mode=flang --rtlib=compiler-rt 
--target=aarch64-windows-msvc -### %s 2>&1 | FileCheck %s 
--check-prefixes=FLANG-RT,CLANG-RT
+! RUN: %clang --driver-mode=flang --rtlib=compiler-rt 
--target=ppc64le-linux-gnu -### %s 2>&1 | FileCheck %s 
--check-prefixes=FLANG-RT,CLANG-RT
+! RUN: %clang --driver-mode=flang --rtlib=compiler-rt 
--target=powerpc64-ibm-aix -### %s 2>&1 | FileCheck %s 
--check-prefixes=FLANG-RT,CLANG-RT
+! RUN: %clang --driver-mode=flang --rtlib=compiler-rt 
--target=sparc-sun-solaris2.11 -### %s 2>&1 | FileCheck %s 
--check-prefixes=FLANG-RT,CLANG-RT
+! RUN: %clang --driver-mode=flang --target=arm64-apple-darwin -### %s 2>&1 | 
FileCheck %s --check-prefix=FLANG-RT
+! RUN: %clang --driver-mode=flang --target=amd64-pc-freebsd -### %s 2>&1 | 
FileCheck %s --check-prefix=FLANG-RT
+! RUN: %clang --driver-mode=flang --target=x86_64-unknown-haiku -### %s 2>&1 | 
FileCheck %s --check-prefix=FLANG-RT
+! CLANG-RT-DAG: clang_rt.{{[^ "]}}
+! FLANG-RT-DAG: flang_rt.{{[^ "]}}
 
 ! RUN: not %clang --driver-mode=flang -stdlib=libc++ -### %s 2>&1 | FileCheck 
--check-prefix=LIBCXX %s
 ! LIBCXX: error: unknown argument: '-stdlib=libc++'

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to