| // RUN: %clang_cc1 -emit-llvm %s -o %t | 
 |  | 
 | /* Sparc is not C99-compliant */ | 
 | #if defined(sparc) || defined(__sparc__) || defined(__sparcv9) | 
 |  | 
 | int main() { return 0; } | 
 |  | 
 | #else /* sparc */ | 
 |  | 
 | #define ESCAPE 2 | 
 | #define IMAGE_WIDTH 150 | 
 | #define IMAGE_HEIGHT 50 | 
 | #if 1 | 
 | #define IMAGE_SIZE 60 | 
 | #else | 
 | #define IMAGE_SIZE 5000 | 
 | #endif | 
 | #define START_X -2.1 | 
 | #define END_X 1.0 | 
 | #define START_Y -1.25 | 
 | #define MAX_ITER 100 | 
 |  | 
 | #define step_X ((END_X - START_X)/IMAGE_WIDTH) | 
 | #define step_Y ((-START_Y - START_Y)/IMAGE_HEIGHT) | 
 |  | 
 | #define I 1.0iF | 
 |  | 
 | int putchar(char c); | 
 |  | 
 | volatile double __complex__ accum; | 
 |  | 
 | void mandel() { | 
 |   int x, y, n; | 
 |   for (y = 0; y < IMAGE_HEIGHT; ++y) { | 
 |     for (x = 0; x < IMAGE_WIDTH; ++x) { | 
 |       double __complex__ c = (START_X+x*step_X) + (START_Y+y*step_Y) * I; | 
 |       double __complex__ z = 0.0; | 
 |  | 
 |       for (n = 0; n < MAX_ITER; ++n) { | 
 |         z = z * z + c; | 
 |         if (hypot(__real__ z, __imag__ z) >= ESCAPE) | 
 |           break; | 
 |       } | 
 |  | 
 |       if (n == MAX_ITER) | 
 |         putchar(' '); | 
 |       else if (n > 6) | 
 |         putchar('.'); | 
 |       else if (n > 3) | 
 |         putchar('+'); | 
 |       else if (n > 2) | 
 |         putchar('x'); | 
 |       else | 
 |         putchar('*'); | 
 |     } | 
 |     putchar('\n'); | 
 |   } | 
 | } | 
 |  | 
 | int main() { | 
 |   mandel(); | 
 |   return 0; | 
 | } | 
 |  | 
 | #endif /* sparc */ |