1; RUN: llc -mtriple=hexagon -mcpu=hexagonv65 < %s | FileCheck %s 2 3; C file was: 4; struct S { char b; long long a; }; 5; void foo(int x, struct S arg1); 6; void bar() { 7; struct S s; 8; s.b = 'a'; 9; foo(42, s); 10;} 11 12; 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 17; regressions. 18; 19 20; CHECK: memd(r{{[0-9]+}}+#8) = 21; CHECK: memd(r{{[0-9]+}}+#0) = 22 23%struct.S = type { i8, i64 } 24 25; Function Attrs: nounwind 26define dso_local void @bar() local_unnamed_addr #0 { 27entry: 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 33 ret void 34} 35 36; Function Attrs: argmemonly nounwind willreturn 37declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 38 39declare dso_local void @foo(i32, ptr byval(%struct.S) align 8) local_unnamed_addr #2 40 41; Function Attrs: argmemonly nounwind willreturn 42declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1 43 44