1ed181efaSSameer Sahasrabuddhe // REQUIRES: amdgpu-registered-target 2ed181efaSSameer Sahasrabuddhe // RUN: %clang_cc1 -triple amdgcn-amd-amdhsa -x hip -fcuda-is-device \ 3*01a6cd47SRichard Smith // RUN: -verify -emit-llvm-only %s 4ed181efaSSameer Sahasrabuddhe 5ed181efaSSameer Sahasrabuddhe #define __device__ __attribute__((device)) 6ed181efaSSameer Sahasrabuddhe extern "C" __device__ int printf(const char *format, ...); 7ed181efaSSameer Sahasrabuddhe 8ed181efaSSameer Sahasrabuddhe // Check that we don't crash when asked to printf a non-scalar arg. 9ed181efaSSameer Sahasrabuddhe struct Struct { 10ed181efaSSameer Sahasrabuddhe int x; 11ed181efaSSameer Sahasrabuddhe int y; 12ed181efaSSameer Sahasrabuddhe }; 13ed181efaSSameer Sahasrabuddhe PrintfNonScalar(const char * fmt)14ed181efaSSameer Sahasrabuddhe__device__ void PrintfNonScalar(const char *fmt) { 15ed181efaSSameer Sahasrabuddhe printf(fmt, 1); 16ed181efaSSameer Sahasrabuddhe // Ignore the warning about the %d not matching the struct argument 17ed181efaSSameer Sahasrabuddhe // expected-warning@+2 {{}} 18ed181efaSSameer Sahasrabuddhe // expected-error@+1 {{cannot compile this non-scalar arg to printf}} 19ed181efaSSameer Sahasrabuddhe printf("%d", Struct()); 20ed181efaSSameer Sahasrabuddhe } 21