Author: Prabhu Rajasekaran
Date: 2025-07-22T17:57:17-07:00
New Revision: 471e59b858b1d2ee844cb527522e60ed03a1a1dc

URL: 
https://github.com/llvm/llvm-project/commit/471e59b858b1d2ee844cb527522e60ed03a1a1dc
DIFF: 
https://github.com/llvm/llvm-project/commit/471e59b858b1d2ee844cb527522e60ed03a1a1dc.diff

LOG: [clang] Set correct CXXABI for UEFI (#150115)

The target triple x86_64-uefi must be assumed to have Microsft ABI by
default.

Fixes: https://github.com/llvm/llvm-project/issues/150113

Added: 
    

Modified: 
    clang/lib/Basic/TargetInfo.cpp
    clang/test/Layout/ms-no-unique-address.cpp
    clang/test/SemaCXX/cxx2a-ms-no-unique-address.cpp

Removed: 
    


################################################################################
diff  --git a/clang/lib/Basic/TargetInfo.cpp b/clang/lib/Basic/TargetInfo.cpp
index 09b6a1f091e92..21fc084d19772 100644
--- a/clang/lib/Basic/TargetInfo.cpp
+++ b/clang/lib/Basic/TargetInfo.cpp
@@ -172,7 +172,7 @@ TargetInfo::TargetInfo(const llvm::Triple &T) : Triple(T) {
   ComplexLongDoubleUsesFP2Ret = false;
 
   // Set the C++ ABI based on the triple.
-  TheCXXABI.set(Triple.isKnownWindowsMSVCEnvironment()
+  TheCXXABI.set(Triple.isKnownWindowsMSVCEnvironment() || Triple.isUEFI()
                     ? TargetCXXABI::Microsoft
                     : TargetCXXABI::GenericItanium);
 

diff  --git a/clang/test/Layout/ms-no-unique-address.cpp 
b/clang/test/Layout/ms-no-unique-address.cpp
index 51cfd9a6ae3b7..fd92056f03652 100644
--- a/clang/test/Layout/ms-no-unique-address.cpp
+++ b/clang/test/Layout/ms-no-unique-address.cpp
@@ -1,4 +1,5 @@
 // RUN: %clang_cc1 -std=c++2a -fsyntax-only -triple x86_64-windows-msvc 
-fms-compatibility -fdump-record-layouts %s | FileCheck %s
+// RUN: %clang_cc1 -std=c++2a -fsyntax-only -triple x86_64-uefi 
-fms-compatibility -fdump-record-layouts %s | FileCheck %s
 
 namespace Empty {
   struct A {};

diff  --git a/clang/test/SemaCXX/cxx2a-ms-no-unique-address.cpp 
b/clang/test/SemaCXX/cxx2a-ms-no-unique-address.cpp
index 726cfa30a0959..a064401e4a73e 100644
--- a/clang/test/SemaCXX/cxx2a-ms-no-unique-address.cpp
+++ b/clang/test/SemaCXX/cxx2a-ms-no-unique-address.cpp
@@ -1,5 +1,6 @@
 // RUN: %clang_cc1 -std=c++2a %s -verify=unsupported -triple x86_64-linux-gnu
 // RUN: %clang_cc1 -std=c++2a %s -verify -triple x86_64-windows 
-fms-compatibility
+// RUN: %clang_cc1 -std=c++2a %s -verify -triple x86_64-uefi -fms-compatibility
 
 [[msvc::no_unique_address]] int a; // expected-error {{only applies to 
non-bit-field non-static data members}} unsupported-warning {{unknown}}
 [[msvc::no_unique_address]] void f(); // expected-error {{only applies to 
non-bit-field non-static data members}} unsupported-warning {{unknown}}


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

Reply via email to