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