xref: /aosp_15_r20/external/clang/test/CodeGenCXX/constructor-conversion.cpp (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 -triple x86_64-apple-darwin -std=c++11 -emit-llvm %s -o - | \
2*67e74705SXin Li // RUN: FileCheck %s
3*67e74705SXin Li // RUN: %clang_cc1 -triple i386-apple-darwin -std=c++11 -emit-llvm %s -o - | \
4*67e74705SXin Li // RUN: FileCheck %s
5*67e74705SXin Li 
6*67e74705SXin Li extern "C" int printf(...);
7*67e74705SXin Li 
8*67e74705SXin Li class X { // ...
9*67e74705SXin Li public:
X(int)10*67e74705SXin Li   X(int) : iX(2), fX(2.3) , name("HELLO\n") {  }
11*67e74705SXin Li 
X(const char * arg,int ix=0)12*67e74705SXin Li   X(const char* arg, int ix=0) { iX = ix; fX = 6.0; name = arg+ix; }
X()13*67e74705SXin Li   X(): iX(100), fX(1.2) {}
14*67e74705SXin Li   int iX;
15*67e74705SXin Li   float fX;
16*67e74705SXin Li   const char *name;
pr(void)17*67e74705SXin Li   void pr(void) {
18*67e74705SXin Li     printf("iX = %d  fX = %f name = %s\n", iX, fX, name);
19*67e74705SXin Li   }
20*67e74705SXin Li };
21*67e74705SXin Li 
g(X arg)22*67e74705SXin Li void g(X arg) {
23*67e74705SXin Li   arg.pr();
24*67e74705SXin Li }
25*67e74705SXin Li 
f(X arg)26*67e74705SXin Li void f(X arg) {
27*67e74705SXin Li   X a = 1;        // a = X(1)
28*67e74705SXin Li 
29*67e74705SXin Li   a.pr();
30*67e74705SXin Li 
31*67e74705SXin Li   X b = "Jessie"; //  b=X("Jessie",0)
32*67e74705SXin Li 
33*67e74705SXin Li   b.pr();
34*67e74705SXin Li 
35*67e74705SXin Li 
36*67e74705SXin Li   a = 2;          // a = X(2)
37*67e74705SXin Li 
38*67e74705SXin Li   a.pr();
39*67e74705SXin Li }
40*67e74705SXin Li 
41*67e74705SXin Li 
main()42*67e74705SXin Li int main() {
43*67e74705SXin Li   X x;
44*67e74705SXin Li   f(x);
45*67e74705SXin Li   g(3);           // g(X(3))
46*67e74705SXin Li }
47*67e74705SXin Li 
48*67e74705SXin Li // CHECK: call void @_ZN1XC1Ei
49*67e74705SXin Li // CHECK: call void @_ZN1XC1EPKci
50*67e74705SXin Li // CHECK: call void @_ZN1XC1Ev
51