This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH, tree-optimization]: Fix PR tree-optimization/33920, [4.3 Regression] Segfault in combine_blocks/tree-if-conv.c


Diego Novillo wrote:

When SSA diamond degenerates into:

    11
    | \
    |  \
    |   12
    |  /
    | /
    13

then bb 11 is not required to have a condition predicate set in its
bb->aux field.

This is not quite what is happening. The diamond is not degenerating,
the problem is that the predicate is in block 10, and the presence of
the user label in block 11 prevents us from merging the two blocks,
that's why block 11 needs no conditional predicate.

No, we _do_ copy predicate from bb 10 (the code around line 190). The problem is, that the predicate in bb 10 (single predecessor above bb 11) is null, since bb 10 happens to be loop header,


Perhaps we should force null predicates of loop headers to "true"?

Uros.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]