; RUN: llc -march=hexagon -mcpu=hexagonv65 < %s | FileCheck %s
; REQUIRES: hexagon

; C file was:
; struct S { char b; long long a; };
; void foo(int x, struct S arg1);
; void bar() {
;   struct S s;
;   s.b = 'a';
;   foo(42, s);
;}

;
; Test that while passing a 7-byte struct on the stack, the
; size of the struct is 16 bytes including padding since its
; largest member is of type long long. This was being handled
; correctly but is a sanity check against any potential future
; regressions.
;

; CHECK: memd(r{{[0-9]+}}+#8) =
; CHECK: memd(r{{[0-9]+}}+#0) =

%struct.S = type { i8, i64 }

; Function Attrs: nounwind
define dso_local void @bar() local_unnamed_addr #0 {
entry:
  %s = alloca %struct.S, align 8
  %0 = getelementptr inbounds %struct.S, %struct.S* %s, i32 0, i32 0
  call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %0) #3
  store i8 97, i8* %0, align 8
  tail call void @foo(i32 42, %struct.S* nonnull byval(%struct.S) align 8 %s) #3
  call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %0) #3
  ret void
}

; Function Attrs: argmemonly nounwind willreturn
declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) #1

declare dso_local void @foo(i32, %struct.S* byval(%struct.S) align 8) local_unnamed_addr #2

; Function Attrs: argmemonly nounwind willreturn
declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) #1

