https://gcc.gnu.org/bugzilla/show_bug.cgi?id=36550

--- Comment #14 from Manuel López-Ibáñez <manu at gcc dot gnu.org> ---
Predicate analysis is not able to figure out this case because it cannot see
that the default def is also conditional on cond1_8(D) != 0, thus warn_15 is
never warn_5(D)(13). 

(The callgraph is also a bit of a mess).

This case seems easier to fix, but still would need someone to figure out how
to evaluate and combine the predicates for default defs.


[WORKLIST]: add to initial list: warn_15 = PHI <warn_5(D)(13), warn_7(9)>
[CHECK]: examining phi: warn_15 = PHI <warn_5(D)(13), warn_7(9)>

[CHECK] Found def edge 1 in warn_15 = PHI <warn_5(D)(13), warn_7(9)>
[BEFORE SIMPLICATION -- [USE]:
warn_16 = PHI <warn_15(11), warn_7(10)>
is guarded by :

cond2_4(D) != 0


[BEFORE NORMALIZATION --[USE]:
warn_16 = PHI <warn_15(11), warn_7(10)>
is guarded by :

cond2_4(D) != 0


[AFTER NORMALIZATION -- [USE]:
warn_16 = PHI <warn_15(11), warn_7(10)>
is guarded by :

cond2_4(D) != 0

[BEFORE SIMPLICATION -- [DEF]:
warn_15 = PHI <warn_5(D)(13), warn_7(9)>
is guarded by :

cond2_4(D) != 0 (.AND.) cond1_8(D) != 0


[BEFORE NORMALIZATION --[DEF]:
warn_15 = PHI <warn_5(D)(13), warn_7(9)>
is guarded by :

cond2_4(D) != 0 (.AND.) cond1_8(D) != 0


[AFTER NORMALIZATION -- [DEF]:
warn_15 = PHI <warn_5(D)(13), warn_7(9)>
is guarded by :

cond1_8(D) != 0 (.AND.) cond2_4(D) != 0


[CHECK]: Found unguarded use: warn_16 = PHI <warn_15(11), warn_7(10)>
[WORKLIST]: Update worklist with phi: warn_16 = PHI <warn_15(11), warn_7(10)>
[CHECK]: examining phi: warn_16 = PHI <warn_15(11), warn_7(10)>
[CHECK]: Found unguarded use: a = warn_16;

Reply via email to