aboutsummaryrefslogtreecommitdiff
path: root/gcc/omp-expand.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2020-07-13 18:25:53 +0200
committerJakub Jelinek <jakub@redhat.com>2020-07-13 18:25:53 +0200
commit776e48e0931db69f158f40e5cb8e15463d879a42 (patch)
tree3d604bcfb67376e9ddd38d9746a80d993d0a7e1d /gcc/omp-expand.c
parentbae66e0f04323ba9d5daf60fcb997de925100e3e (diff)
downloadgcc-776e48e0931db69f158f40e5cb8e15463d879a42.zip
gcc-776e48e0931db69f158f40e5cb8e15463d879a42.tar.gz
gcc-776e48e0931db69f158f40e5cb8e15463d879a42.tar.bz2
ipa-fnsummary: Fix ICE with switch predicates [PR96130]
The following testcase ICEs since r10-3199. There is a switch with default label, where the controlling expression has range just 0..7 and there are case labels for all those 8 values, but nothing has yet optimized away the default. Since r10-3199, set_switch_stmt_execution_predicate sets the switch to default label's edge's predicate to a false predicate and then compute_bb_predicates propagates the predicates through the cfg, but false predicates aren't really added. The caller of compute_bb_predicates in one place handles NULL bb->aux as false predicate: if (fbi.info) { if (bb->aux) bb_predicate = *(predicate *) bb->aux; else bb_predicate = false; } else bb_predicate = true; but then in two further spots that the patch below is changing it assumes bb->aux must be non-NULL. Those two spots are guarded by a condition that is only true if fbi.info is non-NULL, so I think the right fix is to treat NULL aux as false predicate in those spots too. 2020-07-13 Jakub Jelinek <jakub@redhat.com> PR ipa/96130 * ipa-fnsummary.c (analyze_function_body): Treat NULL bb->aux as false predicate. * gcc.dg/torture/pr96130.c: New test.
Diffstat (limited to 'gcc/omp-expand.c')
0 files changed, 0 insertions, 0 deletions