33 lines
364 B
C
33 lines
364 B
C
extern void abort (void);
|
|
|
|
void __attribute__((noinline))
|
|
bar (int **p)
|
|
{
|
|
float *q = (float *)p;
|
|
*q = 0.0;
|
|
}
|
|
|
|
float __attribute__((noinline))
|
|
foo (int b)
|
|
{
|
|
int *i = 0;
|
|
float f = 1.0;
|
|
int **p;
|
|
if (b)
|
|
p = &i;
|
|
else
|
|
p = (int **)&f;
|
|
bar (p);
|
|
if (b)
|
|
return **p;
|
|
return f;
|
|
}
|
|
|
|
int main()
|
|
{
|
|
if (foo(0) != 0.0)
|
|
abort ();
|
|
return 0;
|
|
}
|
|
|