xref: /minix3/external/bsd/llvm/dist/clang/test/CodeGenCXX/fastcall.cpp (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
1f4a2713aSLionel Sambuc // RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm -o - %s | FileCheck %s
2f4a2713aSLionel Sambuc 
3f4a2713aSLionel Sambuc void __attribute__((fastcall)) foo1(int &y);
bar1(int & y)4f4a2713aSLionel Sambuc void bar1(int &y) {
5f4a2713aSLionel Sambuc   // CHECK-LABEL: define void @_Z4bar1Ri
6*0a6a1f1dSLionel Sambuc   // CHECK: call x86_fastcallcc void @_Z4foo1Ri(i32* inreg dereferenceable({{[0-9]+}}) %
7f4a2713aSLionel Sambuc   foo1(y);
8f4a2713aSLionel Sambuc }
9f4a2713aSLionel Sambuc 
10f4a2713aSLionel Sambuc struct S1 {
11f4a2713aSLionel Sambuc   int x;
12f4a2713aSLionel Sambuc   S1(const S1 &y);
13f4a2713aSLionel Sambuc };
14f4a2713aSLionel Sambuc 
15f4a2713aSLionel Sambuc void __attribute__((fastcall)) foo2(S1 a, int b);
bar2(S1 a,int b)16f4a2713aSLionel Sambuc void bar2(S1 a, int b) {
17f4a2713aSLionel Sambuc   // CHECK-LABEL: define void @_Z4bar22S1i
18f4a2713aSLionel Sambuc   // CHECK: call x86_fastcallcc void @_Z4foo22S1i(%struct.S1* inreg %{{.*}}, i32 inreg %
19f4a2713aSLionel Sambuc   foo2(a, b);
20f4a2713aSLionel Sambuc }
21