1 ; RUN: llc -march=hexagon -mcpu=hexagonv65 < %s | FileCheck %s
4 ; struct S { char b; long long a; };
5 ; void foo(int x, struct S arg1);
13 ; Test that while passing a 7-byte struct on the stack, the
14 ; size of the struct is 16 bytes including padding since its
15 ; largest member is of type long long. This was being handled
16 ; correctly but is a check against any potential future
20 ; CHECK: memd(r{{[0-9]+}}+#8) =
21 ; CHECK: memd(r{{[0-9]+}}+#0) =
23 %struct.S = type { i8, i64 }
25 ; Function Attrs: nounwind
26 define dso_local void @bar() local_unnamed_addr #0 {
28 %s = alloca %struct.S, align 8
29 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %s) #3
30 store i8 97, ptr %s, align 8
31 tail call void @foo(i32 42, ptr nonnull byval(%struct.S) align 8 %s) #3
32 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %s) #3
36 ; Function Attrs: argmemonly nounwind willreturn
37 declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1
39 declare dso_local void @foo(i32, ptr byval(%struct.S) align 8) local_unnamed_addr #2
41 ; Function Attrs: argmemonly nounwind willreturn
42 declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1