xref: /llvm-project/llvm/test/CodeGen/SystemZ/systemz-large-stack-frames.ll (revision 1de1818fabb474d724741ee28baa5a7e1d972b00)
1*1de1818fSZibi Sarbinowski; REQUIRES: asserts
2*1de1818fSZibi Sarbinowski; REQUIRES: systemz-registered-target
3*1de1818fSZibi Sarbinowski; Used to fail with: LLVM ERROR: Error while trying to spill R5D from class ADDR64Bit: Cannot scavenge register without an emergency spill slot!
4*1de1818fSZibi Sarbinowski
5*1de1818fSZibi Sarbinowski
6*1de1818fSZibi Sarbinowski; RUN: llc %s --mtriple s390x-ibm-zos -filetype obj -o %t
7*1de1818fSZibi Sarbinowski
8*1de1818fSZibi Sarbinowski; ModuleID = 'main.cpp'
9*1de1818fSZibi Sarbinowskisource_filename = "main.cpp"
10*1de1818fSZibi Sarbinowskitarget datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
11*1de1818fSZibi Sarbinowskitarget triple = "x86_64-unknown-linux-gnu"
12*1de1818fSZibi Sarbinowski
13*1de1818fSZibi Sarbinowski; ModuleID = 'large-stack-frames.cpp'
14*1de1818fSZibi Sarbinowskisource_filename = "large-stack-frames.cpp"
15*1de1818fSZibi Sarbinowskitarget datalayout = "E-m:l-p1:32:32-i1:8:16-i8:8:16-i64:64-f128:64-v128:64-a:8:16-n32:64"
16*1de1818fSZibi Sarbinowskitarget triple = "s390x-ibm-zos"
17*1de1818fSZibi Sarbinowski%struct.slice.108 = type { ptr, ptr, [8 x i64], [8 x i64], [8 x i64] }
18*1de1818fSZibi Sarbinowskideclare void @dealloc(ptr) local_unnamed_addr #0
19*1de1818fSZibi Sarbinowskidefine internal void @foo([26 x i64] %co1, [26 x i64] %co2, [26 x i64] %co3, [26 x i64] %co4, [26 x i64] %co5, [26 x i64] %co6, [26 x i64] %co7, [26 x i64] %co8, i32 %skip_dispatch, ptr %0, i1 %1) #0 {
20*1de1818fSZibi Sarbinowskientry:
21*1de1818fSZibi Sarbinowski  %ref.tmp = alloca %struct.slice.108, align 8
22*1de1818fSZibi Sarbinowski  br i1 %1, label %error, label %if.end95
23*1de1818fSZibi Sarbinowskiif.end95:
24*1de1818fSZibi Sarbinowski  br i1 %1, label %if.else.i1546, label %object.exit1547
25*1de1818fSZibi Sarbinowskiif.else.i1546:
26*1de1818fSZibi Sarbinowski  tail call void @dealloc(ptr noundef nonnull %0)
27*1de1818fSZibi Sarbinowski  br label %object.exit1547
28*1de1818fSZibi Sarbinowskiobject.exit1547:
29*1de1818fSZibi Sarbinowski  %call96 = tail call fastcc noundef ptr @slice([26 x i64] inreg %co7, i32 noundef signext 1, ptr noundef nonnull @get_float, ptr noundef nonnull @object, i32 noundef signext 0)
30*1de1818fSZibi Sarbinowski  ret void
31*1de1818fSZibi Sarbinowskierror:
32*1de1818fSZibi Sarbinowski  ret void
33*1de1818fSZibi Sarbinowski}
34*1de1818fSZibi Sarbinowskideclare dso_local fastcc ptr @slice([26 x i64], i32, ptr, ptr, i32) unnamed_addr #0
35*1de1818fSZibi Sarbinowskidefine internal ptr @get_float(ptr %itemp, ptr %2) #0 {
36*1de1818fSZibi Sarbinowskientry:
37*1de1818fSZibi Sarbinowski  ret ptr %2
38*1de1818fSZibi Sarbinowski}
39*1de1818fSZibi Sarbinowskidefine internal i32 @object(ptr %itemp, ptr %obj) #0 {
40*1de1818fSZibi Sarbinowskientry:
41*1de1818fSZibi Sarbinowski  ret i32 1
42*1de1818fSZibi Sarbinowski}
43