xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/GC/argpromotion.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -argpromotion
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.gcroot(i8**, i8*)
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Workerdefine i32 @g() {
6*9880d681SAndroid Build Coastguard Workerentry:
7*9880d681SAndroid Build Coastguard Worker	%var = alloca i32
8*9880d681SAndroid Build Coastguard Worker	store i32 1, i32* %var
9*9880d681SAndroid Build Coastguard Worker	%x = call i32 @f(i32* %var)
10*9880d681SAndroid Build Coastguard Worker	ret i32 %x
11*9880d681SAndroid Build Coastguard Worker}
12*9880d681SAndroid Build Coastguard Worker
13*9880d681SAndroid Build Coastguard Workerdefine internal i32 @f(i32* %xp) gc "example" {
14*9880d681SAndroid Build Coastguard Workerentry:
15*9880d681SAndroid Build Coastguard Worker	%var = alloca i8*
16*9880d681SAndroid Build Coastguard Worker	call void @llvm.gcroot(i8** %var, i8* null)
17*9880d681SAndroid Build Coastguard Worker	%x = load i32, i32* %xp
18*9880d681SAndroid Build Coastguard Worker	ret i32 %x
19*9880d681SAndroid Build Coastguard Worker}
20