================
@@ -713,8 +713,8 @@ class LLVM_LIBRARY_VISIBILITY X86_64TargetInfo : public 
X86TargetInfo {
   X86_64TargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
       : X86TargetInfo(Triple, Opts) {
     const bool IsX32 = getTriple().isX32();
-    bool IsWinCOFF =
-        getTriple().isOSWindows() && getTriple().isOSBinFormatCOFF();
+    bool IsWinCOFF = (getTriple().isOSWindows() || getTriple().isUEFI()) &&
+                     getTriple().isOSBinFormatCOFF();
     LongWidth = LongAlign = PointerWidth = PointerAlign = IsX32 ? 32 : 64;
----------------
Prabhuk wrote:

While debugging some of our EFI workloads noticed that the integer type 
definitions set here are not correct for UEFI X86_64. I have a local patch 
which overrides the values set here to fix the problem. I am simplifying the 
code and pasting it here:

```
if(getTriple().isUEFI() && !IsX32) {
        LongWidth = LongAlign = 32;
        DoubleAlign = LongLongAlign = 64;
        IntMaxType = SignedLongLong;
        Int64Type = SignedLongLong;
        SizeType = UnsignedLongLong;
        PtrDiffType = SignedLongLong;
        IntPtrType = SignedLongLong;
        LongDoubleWidth = LongDoubleAlign = 64;
        LongDoubleFormat = &llvm::APFloat::IEEEdouble();
      }
```

I am starting lean towards retaining the UEFIX86_64TargetInfo to not "pollute" 
the X86_64TargetInfo with too many conditional overrides for UEFI. What do you 
think?

https://github.com/llvm/llvm-project/pull/120632
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to