13883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher// RUN: %clang_cc1 -w -emit-llvm %s -o /dev/null 23883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher 33883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher/* These are random tests that I used when working on the GCC frontend 43883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher originally. */ 53883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher 63883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher// test floating point comparison! 73883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopherint floatcomptest(double *X, double *Y, float *x, float *y) { 83883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher return *X < *Y || *x < *y; 93883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher} 103883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher 113883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopherextern void *malloc(unsigned); 123883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher 133883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher// Exposed a bug 143883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christophervoid *memset_impl(void *dstpp, int c, unsigned len) { 153883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher long long int dstp = (long long int) dstpp; 163883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher 173883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher while (dstp % 4 != 0) 183883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher { 193883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher ((unsigned char *) dstp)[0] = c; 203883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher dstp += 1; 213883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher len -= 1; 223883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher } 233883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher return dstpp; 243883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher} 253883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher 263883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher// TEST problem with signed/unsigned versions of the same constants being shared 273883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher// incorrectly! 283883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher// 293883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopherstatic char *temp; 303883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopherstatic int remaining; 313883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopherstatic char *localmalloc(int size) { 323883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher char *blah; 333883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher 343883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher if (size>remaining) 353883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher { 363883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher temp = (char *) malloc(32768); 373883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher remaining = 32768; 383883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher return temp; 393883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher } 403883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher return 0; 413883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher} 423883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher 433883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christophertypedef struct { double X; double Y; int Z; } PBVTest; 443883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher 453883e66cfd55de70d89831cf26f9ae53931d11d3Eric ChristopherPBVTest testRetStruct(float X, double Y, int Z) { 463883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher PBVTest T = { X, Y, Z }; 473883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher return T; 483883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher} 493883e66cfd55de70d89831cf26f9ae53931d11d3Eric ChristopherPBVTest testRetStruct2(void); // external func no inlining 503883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher 513883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher 523883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopherdouble CallRetStruct(float X, double Y, int Z) { 533883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher PBVTest T = testRetStruct2(); 543883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher return T.X+X+Y+Z; 553883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher} 563883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher 573883e66cfd55de70d89831cf26f9ae53931d11d3Eric Christopher 58