; Used to fail with: LLVM ERROR: Error while trying to spill R5D from class ADDR64Bit: Cannot scavenge register without an emergency spill slot!


; RUN: llc %s --mtriple s390x-ibm-zos -filetype obj -o %t

; ModuleID = 'main.cpp'
source_filename = "main.cpp"
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

; ModuleID = 'large-stack-frames.cpp'
source_filename = "large-stack-frames.cpp"
target datalayout = "E-m:l-p1:32:32-i1:8:16-i8:8:16-i64:64-f128:64-v128:64-a:8:16-n32:64"
target triple = "s390x-ibm-zos"
%struct.slice.108 = type { ptr, ptr, [8 x i64], [8 x i64], [8 x i64] }
declare void @dealloc(ptr) local_unnamed_addr #0
define 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 {
entry:
  %ref.tmp = alloca %struct.slice.108, align 8
  br i1 %1, label %error, label %if.end95
if.end95:
  br i1 %1, label %if.else.i1546, label %object.exit1547
if.else.i1546:
  tail call void @dealloc(ptr noundef nonnull %0)
  br label %object.exit1547
object.exit1547:
  %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)
  ret void
error:
  ret void
}
declare dso_local fastcc ptr @slice([26 x i64], i32, ptr, ptr, i32) unnamed_addr #0
define internal ptr @get_float(ptr %itemp, ptr %2) #0 {
entry:
  ret ptr %2
}
define internal i32 @object(ptr %itemp, ptr %obj) #0 {
entry:
  ret i32 1
}
