diff options
author | Richard Biener <rguenther@suse.de> | 2022-11-30 12:05:29 +0100 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2022-11-30 12:53:10 +0100 |
commit | b628cad9e093f7a33042fb9dd647f183394eefae (patch) | |
tree | aab9053ecb81a4c6fdc09abca18d26d55690a922 /gcc/fortran/parse.cc | |
parent | 2792cb50f55529e1737461e032ed13e7f04f73d2 (diff) | |
download | gcc-b628cad9e093f7a33042fb9dd647f183394eefae.zip gcc-b628cad9e093f7a33042fb9dd647f183394eefae.tar.gz gcc-b628cad9e093f7a33042fb9dd647f183394eefae.tar.bz2 |
tree-optimization/107919 - predicate simplification in uninit
The testcase from the PR at -O2 shows
((_277 == 2) AND (_79 == 0))
OR ((NOT (_277 == 0)) AND (NOT (_277 > 2)) AND (NOT (_277 == 2)) AND (_79 == 0))
OR ((NOT (pretmp_300 == 255)) AND (_277 == 0) AND (NOT (_277 > 2)) AND (NOT (_277 == 2)) AND (_79 == 0))
which we fail to simplify. The following patch makes us simplify
the relations on _277, producing
((_79 == 0) AND (_277 == 2))
OR ((_79 == 0) AND (_277 <= 1) AND (NOT (_277 == 0)))
OR ((_79 == 0) AND (_277 == 0) AND (NOT (pretmp_300 == 255)))
which might be an incremental step to resolve a bogus uninit
diagnostic at -O2. The patch uses maybe_fold_and_comparison for this.
PR tree-optimization/107919
* gimple-predicate-analysis.cc (simplify_1): Rename to ...
(simplify_1a): .. this.
(simplify_1b): New.
(predicate::simplify): Call both simplify_1a and simplify_1b.
Diffstat (limited to 'gcc/fortran/parse.cc')
0 files changed, 0 insertions, 0 deletions