https://github.com/Prabhuk updated 
https://github.com/llvm/llvm-project/pull/124824

>From 270c260ba8160c71c6602fcb91a635368ee09a88 Mon Sep 17 00:00:00 2001
From: Prabhu Karthikeyan Rajasekaran <prabh...@google.com>
Date: Tue, 28 Jan 2025 19:07:06 +0000
Subject: [PATCH 1/7] [clang] Abort on unsupported uefi triples.

The only architecture currently being supported (still a WIP) is
x86_64. Other UEFI triples targeting other architectures will now
report an error.
---
 clang/lib/Driver/Driver.cpp | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
index 87855fdb799710..f1cd6353234a90 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -6677,6 +6677,8 @@ const ToolChain &Driver::getToolChain(const ArgList &Args,
       TC = std::make_unique<toolchains::AMDGPUToolChain>(*this, Target, Args);
       break;
     case llvm::Triple::UEFI:
+      if(Target.getArch() != llvm::Triple::x86_64)        
+        llvm::report_fatal_error("Currently the only architecture supported by 
*-uefi triples are x86_64.");
       TC = std::make_unique<toolchains::UEFI>(*this, Target, Args);
       break;
     case llvm::Triple::Win32:

>From 8b5cdb310d299e362ec3191941065876d26c5475 Mon Sep 17 00:00:00 2001
From: prabhukr <prabh...@google.com>
Date: Tue, 28 Jan 2025 19:22:49 +0000
Subject: [PATCH 2/7] Fix formatting

---
 clang/lib/Driver/Driver.cpp | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
index f1cd6353234a90..07362e852d4d9b 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -6677,8 +6677,9 @@ const ToolChain &Driver::getToolChain(const ArgList &Args,
       TC = std::make_unique<toolchains::AMDGPUToolChain>(*this, Target, Args);
       break;
     case llvm::Triple::UEFI:
-      if(Target.getArch() != llvm::Triple::x86_64)        
-        llvm::report_fatal_error("Currently the only architecture supported by 
*-uefi triples are x86_64.");
+      if (Target.getArch() != llvm::Triple::x86_64)
+        llvm::report_fatal_error("Currently the only architecture supported by 
"
+                                 "*-uefi triples are x86_64.");
       TC = std::make_unique<toolchains::UEFI>(*this, Target, Args);
       break;
     case llvm::Triple::Win32:

>From 4ad52946c35a879e3ef0f6dbf3704fadc7912ca5 Mon Sep 17 00:00:00 2001
From: prabhukr <prabh...@google.com>
Date: Tue, 28 Jan 2025 23:22:01 +0000
Subject: [PATCH 3/7] Replace fatal error with diagnostic error message

---
 clang/lib/Driver/Driver.cpp | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
index 07362e852d4d9b..69981e7b9ca8a0 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -637,6 +637,10 @@ static llvm::Triple computeTargetTriple(const Driver &D,
     }
   }
 
+  // Currently the only architecture supported by *-uefi triples are x86_64.
+  if(Target.isUEFI() && Target.getArch() != llvm::Triple::x86_64)
+    D.Diag(diag::err_target_unknown_triple) << Target.str();
+
   // The `-maix[32|64]` flags are only valid for AIX targets.
   if (Arg *A = Args.getLastArgNoClaim(options::OPT_maix32, 
options::OPT_maix64);
       A && !Target.isOSAIX())
@@ -6677,9 +6681,6 @@ const ToolChain &Driver::getToolChain(const ArgList &Args,
       TC = std::make_unique<toolchains::AMDGPUToolChain>(*this, Target, Args);
       break;
     case llvm::Triple::UEFI:
-      if (Target.getArch() != llvm::Triple::x86_64)
-        llvm::report_fatal_error("Currently the only architecture supported by 
"
-                                 "*-uefi triples are x86_64.");
       TC = std::make_unique<toolchains::UEFI>(*this, Target, Args);
       break;
     case llvm::Triple::Win32:

>From aaed75898373c3283fd0c17c88ae7d32e1367dc0 Mon Sep 17 00:00:00 2001
From: prabhukr <prabh...@google.com>
Date: Wed, 29 Jan 2025 14:30:31 +0000
Subject: [PATCH 4/7] fix formatting

---
 clang/lib/Driver/Driver.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
index 69981e7b9ca8a0..684f7715bf45d2 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -638,7 +638,7 @@ static llvm::Triple computeTargetTriple(const Driver &D,
   }
 
   // Currently the only architecture supported by *-uefi triples are x86_64.
-  if(Target.isUEFI() && Target.getArch() != llvm::Triple::x86_64)
+  if (Target.isUEFI() && Target.getArch() != llvm::Triple::x86_64)
     D.Diag(diag::err_target_unknown_triple) << Target.str();
 
   // The `-maix[32|64]` flags are only valid for AIX targets.

>From cb22bb6ecfa48b41b661aeeaddd6423009260aab Mon Sep 17 00:00:00 2001
From: prabhukr <prabh...@google.com>
Date: Wed, 29 Jan 2025 18:23:39 +0000
Subject: [PATCH 5/7] Add tests

---
 clang/test/Driver/uefi-unsupported-triples.c | 8 ++++++++
 1 file changed, 8 insertions(+)
 create mode 100644 clang/test/Driver/uefi-unsupported-triples.c

diff --git a/clang/test/Driver/uefi-unsupported-triples.c 
b/clang/test/Driver/uefi-unsupported-triples.c
new file mode 100644
index 00000000000000..c315196352a711
--- /dev/null
+++ b/clang/test/Driver/uefi-unsupported-triples.c
@@ -0,0 +1,8 @@
+// RUN: not %clang_cl --target=aarch64-unknown-uefi < %s 2>&1 | FileCheck 
-check-prefixes=CHECK-AARCH64 %s
+// CHECK-AARCH64: error: unknown target triple 'aarch64-unknown-uefi'
+
+// RUN: not %clang_cl --target=arm-unknown-uefi < %s 2>&1 | FileCheck 
-check-prefixes=CHECK-ARM %s
+// CHECK-ARM: error: unknown target triple 'arm-unknown-uefi'
+
+// RUN: not %clang_cl --target=x86-unknown-uefi < %s 2>&1 | FileCheck 
-check-prefixes=CHECK-x86 %s
+// CHECK-x86: error: unknown target triple 'x86-unknown-uefi'

>From 2a9652d483952dfbdb56546706e45618c420014f Mon Sep 17 00:00:00 2001
From: prabhukr <prabh...@google.com>
Date: Wed, 29 Jan 2025 18:43:00 +0000
Subject: [PATCH 6/7] Duplicate clang_cl tests for clang

---
 clang/test/Driver/uefi-unsupported-triples.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/clang/test/Driver/uefi-unsupported-triples.c 
b/clang/test/Driver/uefi-unsupported-triples.c
index c315196352a711..fa7a39d4bf54c9 100644
--- a/clang/test/Driver/uefi-unsupported-triples.c
+++ b/clang/test/Driver/uefi-unsupported-triples.c
@@ -1,8 +1,11 @@
+// RUN: not %clang --target=aarch64-unknown-uefi < %s 2>&1 | FileCheck 
-check-prefixes=CHECK-AARCH64 %s
 // RUN: not %clang_cl --target=aarch64-unknown-uefi < %s 2>&1 | FileCheck 
-check-prefixes=CHECK-AARCH64 %s
 // CHECK-AARCH64: error: unknown target triple 'aarch64-unknown-uefi'
 
+// RUN: not %clang --target=arm-unknown-uefi < %s 2>&1 | FileCheck 
-check-prefixes=CHECK-ARM %s
 // RUN: not %clang_cl --target=arm-unknown-uefi < %s 2>&1 | FileCheck 
-check-prefixes=CHECK-ARM %s
 // CHECK-ARM: error: unknown target triple 'arm-unknown-uefi'
 
+// RUN: not %clang --target=x86-unknown-uefi < %s 2>&1 | FileCheck 
-check-prefixes=CHECK-x86 %s
 // RUN: not %clang_cl --target=x86-unknown-uefi < %s 2>&1 | FileCheck 
-check-prefixes=CHECK-x86 %s
 // CHECK-x86: error: unknown target triple 'x86-unknown-uefi'

>From 3916cba9e09be9048ac27d1161c577159e6b483e Mon Sep 17 00:00:00 2001
From: prabhukr <prabh...@google.com>
Date: Wed, 29 Jan 2025 18:53:11 +0000
Subject: [PATCH 7/7] Move tests to an existing file

---
 clang/test/Driver/uefi-constructed-args.c    |  2 ++
 clang/test/Driver/uefi-unsupported-triples.c | 11 -----------
 clang/test/Driver/unsupported-target-arch.c  | 18 ++++++++++++++++++
 3 files changed, 20 insertions(+), 11 deletions(-)
 delete mode 100644 clang/test/Driver/uefi-unsupported-triples.c

diff --git a/clang/test/Driver/uefi-constructed-args.c 
b/clang/test/Driver/uefi-constructed-args.c
index 3cc5abe6974539..44d2271e0c8bab 100644
--- a/clang/test/Driver/uefi-constructed-args.c
+++ b/clang/test/Driver/uefi-constructed-args.c
@@ -1,3 +1,5 @@
+// RUN: %clang -### --target=x86_64-unknown-uefi -g -- %s 2>&1 \
+// RUN:     | FileCheck -check-prefixes=CHECK %s
 // RUN: %clang_cl -### --target=x86_64-unknown-uefi -g -- %s 2>&1 \
 // RUN:     | FileCheck -check-prefixes=CHECK %s
 // CHECK: "-cc1"
diff --git a/clang/test/Driver/uefi-unsupported-triples.c 
b/clang/test/Driver/uefi-unsupported-triples.c
deleted file mode 100644
index fa7a39d4bf54c9..00000000000000
--- a/clang/test/Driver/uefi-unsupported-triples.c
+++ /dev/null
@@ -1,11 +0,0 @@
-// RUN: not %clang --target=aarch64-unknown-uefi < %s 2>&1 | FileCheck 
-check-prefixes=CHECK-AARCH64 %s
-// RUN: not %clang_cl --target=aarch64-unknown-uefi < %s 2>&1 | FileCheck 
-check-prefixes=CHECK-AARCH64 %s
-// CHECK-AARCH64: error: unknown target triple 'aarch64-unknown-uefi'
-
-// RUN: not %clang --target=arm-unknown-uefi < %s 2>&1 | FileCheck 
-check-prefixes=CHECK-ARM %s
-// RUN: not %clang_cl --target=arm-unknown-uefi < %s 2>&1 | FileCheck 
-check-prefixes=CHECK-ARM %s
-// CHECK-ARM: error: unknown target triple 'arm-unknown-uefi'
-
-// RUN: not %clang --target=x86-unknown-uefi < %s 2>&1 | FileCheck 
-check-prefixes=CHECK-x86 %s
-// RUN: not %clang_cl --target=x86-unknown-uefi < %s 2>&1 | FileCheck 
-check-prefixes=CHECK-x86 %s
-// CHECK-x86: error: unknown target triple 'x86-unknown-uefi'
diff --git a/clang/test/Driver/unsupported-target-arch.c 
b/clang/test/Driver/unsupported-target-arch.c
index 8df0ee9fe7d06f..c0ec235439bcaf 100644
--- a/clang/test/Driver/unsupported-target-arch.c
+++ b/clang/test/Driver/unsupported-target-arch.c
@@ -63,3 +63,21 @@
 // RUN: not %clang --target=powerpc-apple-darwin -o /dev/null %s 2> %t.err
 // RUN: FileCheck --input-file=%t.err --check-prefix=CHECK-PPCMAC %s
 // CHECK-PPCMAC: error: unknown target triple 'unknown-apple-macosx{{.*}}'
+
+// RUN: not %clang --target=aarch64-unknown-uefi -o %t.o %s 2> %t.err
+// RUN: FileCheck --input-file=%t.err --check-prefix=CHECK-AARCH64 %s
+// RUN: not %clang_cl --target=aarch64-unknown-uefi -o %t.o %s 2> %t.err
+// RUN: FileCheck --input-file=%t.err --check-prefix=CHECK-AARCH64 %s
+// CHECK-AARCH64: error: unknown target triple 'aarch64-unknown-uefi'{{$}}
+
+// RUN: not %clang --target=arm-unknown-uefi -o %t.o %s 2> %t.err
+// RUN: FileCheck --input-file=%t.err -check-prefixes=CHECK-ARM %s
+// RUN: not %clang_cl --target=arm-unknown-uefi -o %t.o %s 2> %t.err
+// RUN: FileCheck --input-file=%t.err -check-prefixes=CHECK-ARM %s
+// CHECK-ARM: error: unknown target triple 'arm-unknown-uefi'{{$}}
+
+// RUN: not %clang --target=x86-unknown-uefi -o %t.o %s 2> %t.err
+// RUN: FileCheck --input-file=%t.err -check-prefixes=CHECK-x86 %s
+// RUN: not %clang_cl --target=x86-unknown-uefi -o %t.o %s 2> %t.err
+// RUN: FileCheck --input-file=%t.err -check-prefixes=CHECK-x86 %s
+// CHECK-x86: error: unknown target triple 'x86-unknown-uefi'{{$}}

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to