[PR50878, PATCH] Fix for verify_dominators in -ftree-tail-merge

Richard Guenther richard.guenther@gmail.com
Sun Oct 30 14:18:00 GMT 2011


On Sun, Oct 30, 2011 at 9:27 AM, Tom de Vries <Tom_deVries@mentor.com> wrote:
> On 10/30/2011 09:20 AM, Tom de Vries wrote:
>> Richard,
>>
>> I have a fix for PR50878.
>
> Sorry, with patch this time.

Ok for now, but see Davids mail and the complexity issue with iteratively
updating dominators.  It seems to me that we know exactly what to update
and how, and we should do that (well, if we need up-to-date dominators,
re-computing them once in the pass would be ok).

Richard.

> Thanks,
> - Tom
>
>>
>> A simplified form of the problem from the test-case of the PR is shown in this
>> cfg. Block 12 has as direct dominator block 5.
>>
>>         5
>>        / \
>>       /   \
>>      *     *
>>      6     7
>>      |     |
>>      |     |
>>      *     *
>>      8     9
>>       \   /
>>        \ /
>>         *
>>        12
>>
>> tail_merge_optimize finds that blocks 6 and 7 are duplicates. After replacing
>> block 7 by block 6, the cfg looks like this:
>>
>>         5
>>         |
>>         |
>>         *
>>         6
>>        / \
>>       /   \
>>      *     *
>>      8     9
>>       \   /
>>        \ /
>>         *
>>        12
>>
>> The new direct dominator of block 12 is block 6, but the current algorithm only
>> recalculates dominator info for blocks 6, 8 and 9.
>>
>> The patch fixes this by additionally recalculating the dominator info for blocks
>> immediately dominated by bb2 (block 6 in the example), if bb2 has a single
>> predecessor after replacement.
>>
>> Bootstapped and reg-tested on x86_64 and i686. Build and reg-tested on MIPS and ARM.
>>
>> Ok for trunk?
>>
>> Thanks,
>> - Tom
>>
>> 2011-10-30  Tom de Vries  <tom@codesourcery.com>
>>
>>       PR tree-optimization/50878
>>       * tree-ssa-tail-merge.c (replace_block_by): Recalculate dominator info
>>       for blocks immediately dominated by bb2, if bb2 has a single predecessor
>>       after replacement.
>
>



More information about the Gcc-patches mailing list