Home | History | Annotate | Download | only in CodeGen
      1 // RUN: %clang_cc1 -w -emit-llvm %s  -o /dev/null
      2 
      3 /* These are random tests that I used when working on the GCC frontend
      4    originally. */
      5 
      6 // test floating point comparison!
      7 int floatcomptest(double *X, double *Y, float *x, float *y) {
      8   return *X < *Y || *x < *y;
      9 }
     10 
     11 extern void *malloc(unsigned);
     12 
     13 // Exposed a bug
     14 void *memset_impl(void *dstpp, int c, unsigned len) {
     15   long long int dstp = (long long int) dstpp;
     16 
     17   while (dstp % 4 != 0)
     18     {
     19       ((unsigned char *) dstp)[0] = c;
     20       dstp += 1;
     21       len -= 1;
     22     }
     23   return dstpp;
     24 }
     25 
     26 // TEST problem with signed/unsigned versions of the same constants being shared
     27 // incorrectly!
     28 //
     29 static char *temp;
     30 static int remaining;
     31 static char *localmalloc(int size) {
     32   char *blah;
     33 
     34   if (size>remaining)
     35     {
     36       temp = (char *) malloc(32768);
     37       remaining = 32768;
     38       return temp;
     39     }
     40   return 0;
     41 }
     42 
     43 typedef struct { double X; double Y; int Z; } PBVTest;
     44 
     45 PBVTest testRetStruct(float X, double Y, int Z) {
     46   PBVTest T = { X, Y, Z };
     47   return T;
     48 }
     49 PBVTest testRetStruct2(void);  // external func no inlining
     50 
     51 
     52 double CallRetStruct(float X, double Y, int Z) {
     53   PBVTest T = testRetStruct2();
     54   return T.X+X+Y+Z;
     55 }
     56 
     57 
     58