[patch] PR 48837
Jeff Law
law@redhat.com
Fri May 6 15:19:00 GMT 2011
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On 05/06/11 04:44, Zdenek Dvorak wrote:
> Hi,
>
> when accumulator transformation is performed on a function like
>
> foo(a)
> {
> if (a > 0)
> return 1 + foo (a - 1)
>
> return bla();
> }
>
> this becomes
>
> foo(a)
> {
> int tmp = 0;
>
> while (a > 0)
> tm = 1 + tmp;
>
> return tmp + bla();
> }
>
> Before, bla was a tail-call, but after the optimization, it is not (since an addition
> has to be performed after the result of bla is known). However, we used to mark bla
> as tail-call, leading to a misscompilation later. Fixed by not marking tail-calls
> when the transformation is performed. Bootstrapped and regtested on i686.
>
> Zdenek
>
> PR tree-optimization/48837
> * tree-tailcall.c (tree_optimize_tail_calls_1): Do not mark tailcalls
> when accumulator transformation is performed.
>
> * gcc.dg/pr48837.c: New testcase.
OK.
Thanks,
jeff
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org/
iQEcBAEBAgAGBQJNxA66AAoJEBRtltQi2kC7yysIAKZYUpU9JlyH2XwvvVslq8C1
CJ7E/akRDsBoYBS+syNsLMwkbGG0WoaFJzOd7vUmIknAHEusF6OasczsN8PD9aEB
i8xJNTZm2yxhrVZh8m/KBX96r80RwzpAhr9L1WAspiS/xpw12lRoJoh3XeKXYXWw
Z0aBL4ljCgLj6GKEyy7FbGHx0gEqaa1x7EDM1kJGCgZPAFJalJPozBiiriYL9/Th
gHqLXZ0HUhXNGql5M2S+lfZG2d30Rj1KBXDrU8EOXedHRjxb+U9+WLGsUHZtkcTI
j3//n6bjTr/YmyTe43voG3Rn6z6k0g2Eb8gF8UMvDbaSJlH9+xb6SuWLS8+mEhY=
=luE9
-----END PGP SIGNATURE-----
More information about the Gcc-patches
mailing list