1b6932692234eba2472ef85a38434496e9342fd38Rafael Espindola// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm -o - %s | FileCheck %s
2b6932692234eba2472ef85a38434496e9342fd38Rafael Espindola
3b6932692234eba2472ef85a38434496e9342fd38Rafael Espindolavoid __attribute__((fastcall)) foo1(int &y);
4b6932692234eba2472ef85a38434496e9342fd38Rafael Espindolavoid bar1(int &y) {
593ab6bf534fb6c26563c00f28a8fc5581bb71dfdStephen Lin  // CHECK-LABEL: define void @_Z4bar1Ri
6ef8225444452a1486bd721f3285301fe84643b00Stephen Hines  // CHECK: call x86_fastcallcc void @_Z4foo1Ri(i32* inreg nonnull %
7b6932692234eba2472ef85a38434496e9342fd38Rafael Espindola  foo1(y);
8b6932692234eba2472ef85a38434496e9342fd38Rafael Espindola}
9b6932692234eba2472ef85a38434496e9342fd38Rafael Espindola
10b6932692234eba2472ef85a38434496e9342fd38Rafael Espindolastruct S1 {
11b6932692234eba2472ef85a38434496e9342fd38Rafael Espindola  int x;
12b6932692234eba2472ef85a38434496e9342fd38Rafael Espindola  S1(const S1 &y);
13b6932692234eba2472ef85a38434496e9342fd38Rafael Espindola};
14b6932692234eba2472ef85a38434496e9342fd38Rafael Espindola
15b6932692234eba2472ef85a38434496e9342fd38Rafael Espindolavoid __attribute__((fastcall)) foo2(S1 a, int b);
16b6932692234eba2472ef85a38434496e9342fd38Rafael Espindolavoid bar2(S1 a, int b) {
1793ab6bf534fb6c26563c00f28a8fc5581bb71dfdStephen Lin  // CHECK-LABEL: define void @_Z4bar22S1i
18b6932692234eba2472ef85a38434496e9342fd38Rafael Espindola  // CHECK: call x86_fastcallcc void @_Z4foo22S1i(%struct.S1* inreg %{{.*}}, i32 inreg %
19b6932692234eba2472ef85a38434496e9342fd38Rafael Espindola  foo2(a, b);
20b6932692234eba2472ef85a38434496e9342fd38Rafael Espindola}
21