llvm-project/llvm/test/CodeGen/PowerPC/aix-cc-byval-limitation3.ll
Zarko Todorovski 0295c2ada4
[PowerPC][AIX] Support ByVals with greater alignment then pointer size (#93341)
Implementation is NOT compatible with IBM XL C 16.1 and earlier but is
compatible with GCC.
It handles all ByVals with greater alignment then pointer width the same
way IBM XL C handles Byvals
that have vector members. For overaligned objects that do not contain
vectors IBM XL C does not align them properly if they are passed in the
GPR
argument registers.

This patch was originally written by Sean Fertile @mandlebug. 

Previously on Phabricator https://reviews.llvm.org/D105659
2024-06-05 12:19:16 -04:00

17 lines
607 B
LLVM

; RUN: not --crash llc -mtriple powerpc-ibm-aix-xcoff < %s 2>&1 | FileCheck %s
; RUN: not --crash llc -mtriple powerpc64-ibm-aix-xcoff < %s 2>&1 | FileCheck %s
%struct.S = type { [1 x i8] }
define void @bar() {
entry:
%s1 = alloca %struct.S, align 32
%agg.tmp = alloca %struct.S, align 32
call void @foo(i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, ptr byval(%struct.S) align 32 %agg.tmp)
ret void
}
declare void @foo(i32, i32, i32, i32, i32, i32, i32, i32, ptr byval(%struct.S) align 32)
; CHECK: LLVM ERROR: Pass-by-value arguments with alignment greater than 16 are not supported.