fastcall.cpp revision b6932692234eba2472ef85a38434496e9342fd38
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) { 5b6932692234eba2472ef85a38434496e9342fd38Rafael Espindola // CHECK: define void @_Z4bar1Ri 6b6932692234eba2472ef85a38434496e9342fd38Rafael Espindola // CHECK: call x86_fastcallcc void @_Z4foo1Ri(i32* inreg % 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) { 17b6932692234eba2472ef85a38434496e9342fd38Rafael Espindola // CHECK: define void @_Z4bar22S1i 18b6932692234eba2472ef85a38434496e9342fd38Rafael Espindola // CHECK: call x86_fastcallcc void @_Z4foo22S1i(%struct.S1* inreg %{{.*}}, i32 inreg % 19b6932692234eba2472ef85a38434496e9342fd38Rafael Espindola foo2(a, b); 20b6932692234eba2472ef85a38434496e9342fd38Rafael Espindola} 21