File tree Expand file tree Collapse file tree 3 files changed +17
-34
lines changed Expand file tree Collapse file tree 3 files changed +17
-34
lines changed Original file line number Diff line number Diff line change @@ -165,6 +165,10 @@ std::unique_ptr<TargetInfo> AllocateTarget(const llvm::Triple &Triple,
165165    case  llvm::Triple::OpenBSD:
166166      return  std::make_unique<OpenBSDTargetInfo<AArch64leTargetInfo>>(Triple,
167167                                                                      Opts);
168+     case  llvm::Triple::UEFI:
169+       return  std::make_unique<UEFITargetInfo<AArch64leTargetInfo>>(Triple,
170+                                                                    Opts);
171+ 
168172    case  llvm::Triple::Win32:
169173      switch  (Triple.getEnvironment ()) {
170174      case  llvm::Triple::GNU:
@@ -614,7 +618,7 @@ std::unique_ptr<TargetInfo> AllocateTarget(const llvm::Triple &Triple,
614618      return  std::make_unique<SolarisTargetInfo<X86_64TargetInfo>>(Triple,
615619                                                                   Opts);
616620    case  llvm::Triple::UEFI:
617-       return  std::make_unique<UEFIX86_64TargetInfo >(Triple, Opts);
621+       return  std::make_unique<UEFITargetInfo<X86_64TargetInfo> >(Triple, Opts);
618622
619623    case  llvm::Triple::Win32: {
620624      switch  (Triple.getEnvironment ()) {
Original file line number Diff line number Diff line change 1313#define  LLVM_CLANG_LIB_BASIC_TARGETS_OSTARGETS_H 
1414
1515#include  " Targets.h" 
16+ #include  " clang/Basic/TargetInfo.h" 
1617
1718namespace  clang  {
1819namespace  targets  {
@@ -788,6 +789,8 @@ class LLVM_LIBRARY_VISIBILITY ZOSTargetInfo : public OSTargetInfo<Target> {
788789//  UEFI target
789790template  <typename  Target>
790791class  LLVM_LIBRARY_VISIBILITY  UEFITargetInfo : public OSTargetInfo<Target> {
792+   llvm::Triple Triple;
793+ 
791794protected: 
792795  void  getOSDefines (const  LangOptions &Opts, const  llvm::Triple &Triple,
793796                    MacroBuilder &Builder) const  override  {
@@ -796,10 +799,18 @@ class LLVM_LIBRARY_VISIBILITY UEFITargetInfo : public OSTargetInfo<Target> {
796799
797800public: 
798801  UEFITargetInfo (const  llvm::Triple &Triple, const  TargetOptions &Opts)
799-       : OSTargetInfo<Target>(Triple, Opts) {
802+       : OSTargetInfo<Target>(Triple, Opts), Triple(Triple)  {
800803    this ->WCharType  = TargetInfo::UnsignedShort;
801804    this ->WIntType  = TargetInfo::UnsignedShort;
802805  }
806+ 
807+   TargetInfo::CallingConvKind
808+   getCallingConvKind (bool  ClangABICompat4) const  override  {
809+     if  (Triple.getArch () == llvm::Triple::x86_64)
810+       return  TargetInfo::CallingConvKind::CCK_MicrosoftWin64;
811+ 
812+     return  Target::getCallingConvKind (ClangABICompat4);
813+   }
803814};
804815
805816void  addWindowsDefines (const  llvm::Triple &Triple, const  LangOptions &Opts,
Original file line number Diff line number Diff line change @@ -820,38 +820,6 @@ class LLVM_LIBRARY_VISIBILITY X86_64TargetInfo : public X86TargetInfo {
820820  }
821821};
822822
823- //  x86-64 UEFI target
824- class  LLVM_LIBRARY_VISIBILITY  UEFIX86_64TargetInfo
825-     : public UEFITargetInfo<X86_64TargetInfo> {
826- public: 
827-   UEFIX86_64TargetInfo (const  llvm::Triple &Triple, const  TargetOptions &Opts)
828-       : UEFITargetInfo<X86_64TargetInfo>(Triple, Opts) {
829-     this ->TheCXXABI .set (TargetCXXABI::Microsoft);
830-     this ->MaxTLSAlign  = 8192u  * this ->getCharWidth ();
831-     this ->resetDataLayout (" e-m:w-p270:32:32-p271:32:32-p272:64:64-" 
832-                           " i64:64-i128:128-f80:128-n8:16:32:64-S128" 
833-   }
834- 
835-   BuiltinVaListKind getBuiltinVaListKind () const  override  {
836-     return  TargetInfo::CharPtrBuiltinVaList;
837-   }
838- 
839-   CallingConvCheckResult checkCallingConvention (CallingConv CC) const  override  {
840-     switch  (CC) {
841-     case  CC_C:
842-     case  CC_Win64:
843-       return  CCCR_OK;
844-     default :
845-       return  CCCR_Warning;
846-     }
847-   }
848- 
849-   TargetInfo::CallingConvKind
850-   getCallingConvKind (bool  ClangABICompat4) const  override  {
851-     return  CCK_MicrosoftWin64;
852-   }
853- };
854- 
855823//  x86-64 Windows target
856824class  LLVM_LIBRARY_VISIBILITY  WindowsX86_64TargetInfo
857825    : public WindowsTargetInfo<X86_64TargetInfo> {
 
 
   
 
     
   
   
          
    
    
     
    
      
     
     
    You can’t perform that action at this time.
  
 
    
  
    
      
        
     
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments