2008-04-25 Kai Tietz <kai.tietz@onevision.com>
[official-gcc.git] / gcc / testsuite / gcc.dg / max-1.c
blob40f2145c038ffabf2774ec5a2505acb9f5c07de2
1 /* PR middle-end/18548 */
2 /* Test case reduced by Andrew Pinski <pinskia@physics.uc.edu> */
3 /* { dg-do run } */
4 /* { dg-options "-O1 " } */
5 /* Option -fno-tree-lrs removed By Andrew MacLeod since it is no longer
6 supported in the compiler beginning with GCC 4.3. */
7 /* m32c has varying sized pointers */
8 /* { dg-skip-if "" { "m32c-*-*" } { "*" } { "-mcpu=m32c" "-mcpu=m32cm" } } */
10 /* Kludge to make it signed. */
11 #define unsigned signed
12 __extension__ typedef __SIZE_TYPE__ ssize_t;
13 #undef unsigned
15 extern void abort (void);
17 ssize_t fff[10];
19 void f(ssize_t a, ssize_t b)
21 ssize_t crcc = b;
22 ssize_t d = *((ssize_t*)(a+1));
23 int i;
25 a = d >= b? d:b;
28 for(i=0;i<10;i++)
29 fff[i] = a;
32 /* The variable a cannot be a local variable as we get better aliasing
33 now and decide that the store to a is dead. The better aliasing comes
34 from better representation of pointer arithmetic. */
35 ssize_t a = 10;
36 int main(void)
38 int i;
39 f((ssize_t)(&a)-1,0);
40 for(i = 0;i<10;i++)
41 if (fff[i]!=10)
42 abort ();
43 return 0;