This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Fix PR64878: do not jump thread across two loop iterations
- From: Richard Biener <richard dot guenther at gmail dot com>
- To: Sebastian Pop <sebpop at gmail dot com>,gcc-patches at gcc dot gnu dot org,Jeff Law <law at redhat dot com>
- Date: Thu, 05 Feb 2015 08:21:46 +0100
- Subject: Re: Fix PR64878: do not jump thread across two loop iterations
- Authentication-results: sourceware.org; auth=none
- References: <20150204212006 dot GA18747 at f1 dot c dot bardezibar dot internal>
On February 4, 2015 10:20:06 PM CET, Sebastian Pop <sebpop@gmail.com> wrote:
>Hi,
>
>The attached patch stops the recursion in the detection of FSM
>jump-threads at
>loop phi nodes after having visited a loop phi node. This avoids
>jump-threading
>two iterations forward that were possible due to a flip-flop operation
>that
>exchange the value of the switch control variable as illustrated in the
>testcase:
>
>do {
> c = read_from_memory;
> switch (a) {
> case 0:
> if (c == ' ')
> [...]
> else
> a = b; // flip-flop
> break;
> case 1:
> a = 0;
> b = 15; // this will jump-thread to 15
> break;
>
> case 15:
> [...]
> }
>} while (...);
>
>The patch has passed bootstrap and regression testing on x86_64-linux.
>Ok to commit?
But is sounds like a useful optimization?
Richard.
>Thanks,
>Sebastian