rt_gccstream/gcc/testsuite/gcc.dg/max-1.c

46 lines
1.0 KiB
C

/* PR middle-end/18548 */
/* Test case reduced by Andrew Pinski <pinskia@physics.uc.edu> */
/* { dg-do run } */
/* { dg-options "-O1 " } */
/* Option -fno-tree-lrs removed By Andrew MacLeod since it is no longer
supported in the compiler beginning with GCC 4.3. */
/* m32c has varying sized pointers */
/* { dg-skip-if "" { "m32c-*-*" } { "*" } { "-mcpu=m32c" "-mcpu=m32cm" } } */
/* Kludge to make it signed. */
#define unsigned signed
__extension__ typedef __SIZE_TYPE__ ssize_t;
#undef unsigned
extern void abort (void);
ssize_t fff[10];
void f(ssize_t a, ssize_t b)
{
ssize_t crcc = b;
ssize_t d = *((ssize_t*)(a+1));
int i;
a = d >= b? d:b;
for(i=0;i<10;i++)
fff[i] = a;
}
/* The variable a cannot be a local variable as we get better aliasing
now and decide that the store to a is dead. The better aliasing comes
from better representation of pointer arithmetic. */
ssize_t a = 10;
int main(void)
{
int i;
f((ssize_t)(&a)-1,0);
for(i = 0;i<10;i++)
if (fff[i]!=10)
abort ();
return 0;
}