------- 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