39 lines · cpp
1// RUN: %clang_cc1 -triple i386-unknown-unknown %s -emit-llvm -o - | FileCheck %s2 3 4// CHECK: _Z3fooRi(ptr inreg5void __attribute__ ((regparm (1))) foo(int &a) {6}7 8struct S1 {9 int x;10 S1(const S1 &y);11};12 13void __attribute__((regparm(3))) foo2(S1 a, int b);14// CHECK: declare void @_Z4foo22S1i(ptr dead_on_return inreg noundef, i32 inreg noundef)15void bar2(S1 a, int b) {16 foo2(a, b);17}18 19struct S2 {20 int x;21};22 23void __attribute__((regparm(3))) foo3(struct S2 a, int b);24// CHECK: declare void @_Z4foo32S2i(i32 inreg, i32 inreg noundef)25void bar3(struct S2 a, int b) {26 foo3(a, b);27}28 29struct S3 {30 struct {31 struct {} b[0];32 } a;33};34__attribute((regparm(2))) void foo4(S3 a, int b);35// CHECK: declare void @_Z4foo42S3i(i32 inreg noundef)36void bar3(S3 a, int b) {37 foo4(a, b);38}39