brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.2 KiB · 9576ac9 Raw
44 lines · plain
1; RUN: llc -mtriple=hexagon -mcpu=hexagonv65 < %s | FileCheck %s2 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, the14; size of the struct is 16 bytes including padding since its15; largest member is of type long long. This was being handled16; correctly but is a check against any potential future17; 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: nounwind26define dso_local void @bar() local_unnamed_addr #0 {27entry:28  %s = alloca %struct.S, align 829  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %s) #330  store i8 97, ptr %s, align 831  tail call void @foo(i32 42, ptr nonnull byval(%struct.S) align 8 %s) #332  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %s) #333  ret void34}35 36; Function Attrs: argmemonly nounwind willreturn37declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #138 39declare dso_local void @foo(i32, ptr byval(%struct.S) align 8) local_unnamed_addr #240 41; Function Attrs: argmemonly nounwind willreturn42declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #143 44