On 09/12/2017 05:21 PM, Jeff Law wrote: > 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.
Hi. Agree with you that we have a lot of code that does what you just described. I tent to change IL representation, where CASE_HIGH is always non-null. $ git grep 'CASE_HIGH\>' | wc -l 125 Which is reasonable amount of code that should be changed. I'll prepare patch for that. Martin > > jeff >