The current code converts every tree to signed hwi; this ICEs with values not representable as shwi, like 9999999999999999999ULL in pr34154.c (and if it didn't ICE, it would print the wrong value).
This fixes it. Bootstrapped and tested on powerpc64-linux. Okay to apply? Segher 2014-05-20 Segher Boessenkool <seg...@kernel.crashing.org> gcc/ * stmt.c (dump_case_nodes): Don't convert values to HOST_WIDE_INT before printing. --- gcc/stmt.c | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/gcc/stmt.c b/gcc/stmt.c index 163d495..722d34f 100644 --- a/gcc/stmt.c +++ b/gcc/stmt.c @@ -774,24 +774,20 @@ static void dump_case_nodes (FILE *f, struct case_node *root, int indent_step, int indent_level) { - HOST_WIDE_INT low, high; - if (root == 0) return; indent_level++; dump_case_nodes (f, root->left, indent_step, indent_level); - low = tree_to_shwi (root->low); - high = tree_to_shwi (root->high); - fputs (";; ", f); - if (high == low) - fprintf (f, "%*s" HOST_WIDE_INT_PRINT_DEC, - indent_step * indent_level, "", low); - else - fprintf (f, "%*s" HOST_WIDE_INT_PRINT_DEC " ... " HOST_WIDE_INT_PRINT_DEC, - indent_step * indent_level, "", low, high); + fprintf (f, "%*s", indent_step * indent_level, ""); + print_dec (root->low, f, TYPE_SIGN (TREE_TYPE (root->low))); + if (!tree_int_cst_equal (root->low, root->high)) + { + fprintf (f, " ... "); + print_dec (root->high, f, TYPE_SIGN (TREE_TYPE (root->high))); + } fputs ("\n", f); dump_case_nodes (f, root->right, indent_step, indent_level); -- 1.8.1.4