diff options
author | Richard Biener <rguenther@suse.de> | 2022-12-01 10:12:28 +0100 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2022-12-01 10:53:41 +0100 |
commit | abf05583dbc86a6667b63f5bda6ba57fe55a1b25 (patch) | |
tree | befc2c277eb2254a84124f509c76f41e20567281 /gcc/gcc.cc | |
parent | 8629f212af0acb113879d0bc45291c54743790f1 (diff) | |
download | gcc-abf05583dbc86a6667b63f5bda6ba57fe55a1b25.zip gcc-abf05583dbc86a6667b63f5bda6ba57fe55a1b25.tar.gz gcc-abf05583dbc86a6667b63f5bda6ba57fe55a1b25.tar.bz2 |
tree-optimization/107937 - uninit predicate simplification fixup
The following changes the predicate representation to record the
value of a predicate with an empty set of AND predicates. That's
necessary to properly represent the conservative fallback for the
def vs use predicates. Since simplification now can result in
such an empty set this distinction becomes important and we need
to check for this as we otherwise ICE.
PR tree-optimization/107937
* gimple-predicate-analysis.h (predicate::is_true): New.
(predicate::is_false): Likewise.
(predicate::empty_val): Likewise.
(uninit_analysis::uninit_analysis): Properly initialize
def_preds.
* gimple-predicate-analysis.cc (simplify_1b): Indicate
whether the chain became empty.
(predicate::simplify): Release emptied chain before removing it.
(predicate::normalize): Replace temporary object with assertion.
(uninit_analysis::is_use_guarded): Deal with predicates
that simplify to true/false.
* gcc.dg/pr107937.c: New testcase.
Diffstat (limited to 'gcc/gcc.cc')
0 files changed, 0 insertions, 0 deletions