On 09/12/2017 01:43 AM, Martin Liška wrote: > Hello. > > In transition to simple_case_node, I forgot to initialize m_high to m_low if > a case > does not have CASE_HIGH. > > Patch can bootstrap on ppc64le-redhat-linux and survives regression tests. > > Ready to be installed? > Martin > > gcc/ChangeLog: > > 2017-09-11 Martin Liska <mli...@suse.cz> > > PR middle-end/82154 > * stmt.c (struct simple_case_node): Assign low to high when > high is equal to null. > > gcc/testsuite/ChangeLog: > > 2017-09-11 Martin Liska <mli...@suse.cz> > > PR middle-end/82154 > * g++.dg/torture/pr82154.C: New test. OK.
THough I have to wonder if we should unify the HIGH handling -- having two different conventions is bound to be confusing. In a CASE_LABEL_EXPR the CASE_HIGH can be NULL, which means the label refers to a singleton value that is found in CASE_LOW. That means we end up doing stuff like this: if (CASE_HIGH (elt)) maxval = fold_convert (index_type, CASE_HIGH (elt)); else maxval = fold_convert (index_type, CASE_LOW (elt)); You could legitimately argue for changing how this works for tree nodes so that there's always a non-null CASE_HIGH. jeff