------- Comment #16 from ubizjak at gmail dot com 2009-09-10 08:50 -------
.optimized tree dump:
;; Function f4 (f4)
f4 (int i)
{
long int D.2098;
int * D.2097;
long unsigned int D.2096;
int * D.2095;
int foo_arg.4;
struct ap;
long int x.3;
double D.2080;
int D.2079;
double * D.2078;
long int D.2076;
long unsigned int iftmp.2;
double * D.2072;
long int D.2071;
int D.2070;
void * D.2069;
<bb 2>:
__builtin_va_start (&ap, 0);
D.2069_2 = ap.__base;
D.2070_3 = ap.__offset;
D.2071_4 = (long int) D.2070_3;
D.2072_5 = (double *) D.2069_2;
if (D.2071_4 <= 47)
goto <bb 3>;
else
goto <bb 4>;
<bb 3>:
D.2076_6 = D.2071_4 + -48;
iftmp.2_7 = (long unsigned int) D.2076_6;
goto <bb 5>;
<bb 4>:
iftmp.2_8 = (long unsigned int) D.2071_4;
<bb 5>:
# iftmp.2_1 = PHI <iftmp.2_7(3), iftmp.2_8(4)>
D.2078_9 = D.2072_5 + iftmp.2_1;
D.2071_10 = D.2071_4 + 8;
D.2079_11 = (int) D.2071_10;
ap.__offset = D.2079_11;
D.2080_12 = *D.2078_9;
x.3_13 = (long int) D.2080_12;
x = x.3_13;
switch (i_14(D)) <default: <L4>, case 5: <L3>>
<L3>:
D.2098_23 = (long int) D.2079_11;
D.2097_24 = (int *) D.2069_2;
D.2096_25 = (long unsigned int) D.2098_23;
D.2095_26 = D.2097_24 + D.2096_25;
foo_arg.4_27 = *D.2095_26;
foo_arg = foo_arg.4_27;
return;
<L4>:
abort ();
}
;; Function main (main)
main ()
{
int foo_arg.1;
long int x.0;
<bb 2>:
f4 (5, 1.6e+1, 128);
x.0_1 = x;
if (x.0_1 != 16)
goto <bb 4>;
else
goto <bb 3>;
<bb 3>:
foo_arg.1_2 = foo_arg;
if (foo_arg.1_2 != 128)
goto <bb 4>;
else
goto <bb 5>;
<bb 4>:
abort ();
<bb 5>:
return 0;
}
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41089