[X86][GlobalISel] Enable nest arguments (#165173)

Nest arguments are supported by CC in X86CallingConv.td. Nothing special
is required in GlobalISel as we reuse the code.

Nest attribute is mostly generated by fortran frontend.
This commit is contained in:
Evgenii Kudriashov 2025-11-18 11:53:08 +01:00 committed by GitHub
parent 3ce893f834
commit 49d77d87d4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 24 additions and 2 deletions

View File

@ -280,8 +280,7 @@ bool X86CallLowering::lowerFormalArguments(MachineIRBuilder &MIRBuilder,
if (Arg.hasAttribute(Attribute::ByVal) ||
Arg.hasAttribute(Attribute::InReg) ||
Arg.hasAttribute(Attribute::SwiftSelf) ||
Arg.hasAttribute(Attribute::SwiftError) ||
Arg.hasAttribute(Attribute::Nest) || VRegs[Idx].size() > 1)
Arg.hasAttribute(Attribute::SwiftError) || VRegs[Idx].size() > 1)
return false;
if (Arg.hasAttribute(Attribute::StructRet)) {

View File

@ -0,0 +1,23 @@
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6
; RUN: llc < %s -mtriple=i686-linux-gnu | FileCheck %s --check-prefixes=X86
; RUN: llc < %s -mtriple=i686-linux-gnu -fast-isel -fast-isel-abort=1 | FileCheck %s --check-prefixes=X86
; RUN: llc < %s -mtriple=i686-linux-gnu -global-isel -global-isel-abort=1 | FileCheck %s --check-prefixes=X86
; RUN: llc < %s -mtriple=x86_64-linux-gnu | FileCheck %s --check-prefixes=X64
; RUN: llc < %s -mtriple=x86_64-linux-gnu -fast-isel -fast-isel-abort=1 | FileCheck %s --check-prefixes=X64
; RUN: llc < %s -mtriple=x86_64-linux-gnu -global-isel -global-isel-abort=1 | FileCheck %s --check-prefixes=X64
; The src array should be in R10 or ECX register due to nest attribute
define i32 @nest_arg(ptr nest %src) {
; X86-LABEL: nest_arg:
; X86: # %bb.0:
; X86-NEXT: movl 8(%ecx), %eax
; X86-NEXT: retl
;
; X64-LABEL: nest_arg:
; X64: # %bb.0:
; X64-NEXT: movl 8(%r10), %eax
; X64-NEXT: retq
%off = getelementptr [3 x i32], ptr %src, i32 0, i32 2
%ret = load i32, ptr %off
ret i32 %ret
}