1*46de3a70SSarah Spall// RUN: %clang_cc1 -finclude-default-header -triple dxil-pc-shadermodel6.6-library %s -verify 2*46de3a70SSarah Spall 3*46de3a70SSarah Spallvoid increment(inout int Arr[2]) { 4*46de3a70SSarah Spall for (int I = 0; I < 2; I++) 5*46de3a70SSarah Spall Arr[0] += 2; 6*46de3a70SSarah Spall} 7*46de3a70SSarah Spall 8*46de3a70SSarah Spallexport int wrongSize() { 9*46de3a70SSarah Spall int A[3] = { 0, 1, 2 }; 10*46de3a70SSarah Spall increment(A); 11*46de3a70SSarah Spall // expected-error@-1 {{no matching function for call to 'increment'}} 12*46de3a70SSarah Spall // expected-note@*:* {{candidate function not viable: no known conversion from 'int[3]' to 'int[2]' for 1st argument}} 13*46de3a70SSarah Spall return A[0]; 14*46de3a70SSarah Spall} 15*46de3a70SSarah Spall 16*46de3a70SSarah Spallexport int wrongSize2() { 17*46de3a70SSarah Spall int A[1] = { 0 }; 18*46de3a70SSarah Spall increment(A); 19*46de3a70SSarah Spall // expected-error@-1 {{no matching function for call to 'increment'}} 20*46de3a70SSarah Spall // expected-note@*:* {{candidate function not viable: no known conversion from 'int[1]' to 'int[2]' for 1st argument}} 21*46de3a70SSarah Spall return A[0]; 22*46de3a70SSarah Spall} 23*46de3a70SSarah Spall 24*46de3a70SSarah Spallexport void tooFewArgs() { 25*46de3a70SSarah Spall increment(); 26*46de3a70SSarah Spall // expected-error@-1 {{no matching function for call to 'increment'}} 27*46de3a70SSarah Spall // expected-note@*:* {{candidate function not viable: requires single argument 'Arr', but no arguments were provided}} 28*46de3a70SSarah Spall} 29*46de3a70SSarah Spall 30*46de3a70SSarah Spallexport float wrongType() { 31*46de3a70SSarah Spall float A[2] = { 0, 1 }; 32*46de3a70SSarah Spall increment(A); 33*46de3a70SSarah Spall // expected-error@-1 {{no matching function for call to 'increment'}} 34*46de3a70SSarah Spall // expected-note@*:* {{candidate function not viable: no known conversion from 'float[2]' to 'int[2]' for 1st argument}} 35*46de3a70SSarah Spall return A[0]; 36*46de3a70SSarah Spall} 37*46de3a70SSarah Spall 38*46de3a70SSarah Spallexport int wrongType2() { 39*46de3a70SSarah Spall increment(5); 40*46de3a70SSarah Spall // expected-error@-1 {{no matching function for call to 'increment'}} 41*46de3a70SSarah Spall // expected-note@*:* {{candidate function not viable: no known conversion from 'int' to 'int[2]' for 1st argument}} 42*46de3a70SSarah Spall return 1; 43*46de3a70SSarah Spall} 44*46de3a70SSarah Spall 45*46de3a70SSarah Spallexport void tooManyArgs() { 46*46de3a70SSarah Spall int A[2] = { 0, 1 }; 47*46de3a70SSarah Spall int B[2] = { 2, 3 }; 48*46de3a70SSarah Spall increment(A, B); 49*46de3a70SSarah Spall // expected-error@-1 {{no matching function for call to 'increment'}} 50*46de3a70SSarah Spall // expected-note@*:* {{candidate function not viable: requires single argument 'Arr', but 2 arguments were provided}} 51*46de3a70SSarah Spall} 52