xref: /aosp_15_r20/external/llvm/test/Transforms/ArgumentPromotion/tail.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: opt %s -argpromotion -S -o - | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker; PR14710
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
5*9880d681SAndroid Build Coastguard Worker
6*9880d681SAndroid Build Coastguard Worker%pair = type { i32, i32 }
7*9880d681SAndroid Build Coastguard Worker
8*9880d681SAndroid Build Coastguard Workerdeclare i8* @foo(%pair*)
9*9880d681SAndroid Build Coastguard Worker
10*9880d681SAndroid Build Coastguard Workerdefine internal void @bar(%pair* byval %Data) {
11*9880d681SAndroid Build Coastguard Worker; CHECK: define internal void @bar(i32 %Data.0, i32 %Data.1)
12*9880d681SAndroid Build Coastguard Worker; CHECK: %Data = alloca %pair
13*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: tail
14*9880d681SAndroid Build Coastguard Worker; CHECK: call i8* @foo(%pair* %Data)
15*9880d681SAndroid Build Coastguard Worker  tail call i8* @foo(%pair* %Data)
16*9880d681SAndroid Build Coastguard Worker  ret void
17*9880d681SAndroid Build Coastguard Worker}
18*9880d681SAndroid Build Coastguard Worker
19*9880d681SAndroid Build Coastguard Workerdefine void @zed(%pair* byval %Data) {
20*9880d681SAndroid Build Coastguard Worker  call void @bar(%pair* byval %Data)
21*9880d681SAndroid Build Coastguard Worker  ret void
22*9880d681SAndroid Build Coastguard Worker}
23