The LIT test cases were migrated with the script provided by Nikita Popov. No manual changes were made. Committed without review since no functional changes, after consultation with uweigand.
46 lines
1.2 KiB
LLVM
46 lines
1.2 KiB
LLVM
; Test that the set of used phys regs used by interprocedural register
|
|
; allocation is correct for a test case where the called function (@fn2)
|
|
; itself has a call (to @fn1). @fn1 defines %r0l, while @fn2 defines
|
|
; %r0d. The RegUsageInfo for @fn2 must include %r0h.
|
|
;
|
|
; RUN: llc -mtriple=s390x-linux-gnu -mcpu=z13 -enable-ipra -print-regusage 2>&1 < %s \
|
|
; RUN: | FileCheck %s
|
|
;
|
|
; CHECK: fn2 Clobbered Registers: {{.*}} $r0h
|
|
|
|
@h = external dso_local global [0 x i32], align 4
|
|
@n = external dso_local global ptr, align 8
|
|
|
|
define void @fn1() {
|
|
bb:
|
|
br label %bb1
|
|
|
|
bb1: ; preds = %bb1, %bb
|
|
%tmp = getelementptr inbounds [0 x i32], ptr @h, i64 0, i64 undef
|
|
%tmp2 = load i32, ptr %tmp
|
|
store i32 %tmp2, ptr undef
|
|
br label %bb1
|
|
}
|
|
|
|
define void @fn2() {
|
|
bb:
|
|
br label %bb1
|
|
|
|
bb1: ; preds = %bb
|
|
br i1 undef, label %bb2, label %bb3
|
|
|
|
bb2: ; preds = %bb1
|
|
store ptr null, ptr @n
|
|
unreachable
|
|
|
|
bb3: ; preds = %bb1
|
|
call void @fn1()
|
|
unreachable
|
|
}
|
|
|
|
define void @main() {
|
|
bb:
|
|
call void @fn2()
|
|
ret void
|
|
}
|