On Wed, May 15, 2019 at 12:20:42PM +0200, Martin Liška wrote: > 2019-05-15 Martin Liska <mli...@suse.cz> > > PR middle-end/90478 > * tree-switch-conversion.c (jump_table_cluster::can_be_handled): > Check for overflow. > > gcc/testsuite/ChangeLog: > > 2019-05-15 Martin Liska <mli...@suse.cz> > > PR middle-end/90478 > * gcc.dg/tree-ssa/pr90478-2.c: New test. > * gcc.dg/tree-ssa/pr90478.c: New test.
The pr90478.c test fails on i686-linux: FAIL: gcc.dg/tree-ssa/pr90478.c (test for excess errors) Excess errors: /home/jakub/src/gcc/gcc/testsuite/gcc.dg/tree-ssa/pr90478.c:14:3: error: integer constant is too large for 'long' type [-Wlong-long] /home/jakub/src/gcc/gcc/testsuite/gcc.dg/tree-ssa/pr90478.c:14:3: warning: overflow in conversion from 'long long int' to 'long int' changes value from '2057594037927936' to '-239534080' [-Woverflow] /home/jakub/src/gcc/gcc/testsuite/gcc.dg/tree-ssa/pr90478.c:16:3: error: integer constant is too large for 'long' type [-Wlong-long] /home/jakub/src/gcc/gcc/testsuite/gcc.dg/tree-ssa/pr90478.c:16:3: warning: overflow in conversion from 'long long int' to 'long int' changes value from '4611686018427387904' to '0' [-Woverflow] /home/jakub/src/gcc/gcc/testsuite/gcc.dg/tree-ssa/pr90478.c:16:3: error: duplicate case value Fixed thusly, tested on x86_64-linux with -m32/-m64, committed to trunk as obvious: 2019-05-16 Jakub Jelinek <ja...@redhat.com> PR middle-end/90478 * gcc.dg/tree-ssa/pr90478.c: Add empty dg-options. Use long long type instead of long. --- gcc/testsuite/gcc.dg/tree-ssa/pr90478.c.jj 2019-05-15 23:36:44.476116559 +0200 +++ gcc/testsuite/gcc.dg/tree-ssa/pr90478.c 2019-05-16 00:41:58.088087596 +0200 @@ -1,7 +1,8 @@ /* { dg-do compile } */ +/* { dg-options "" } */ typedef struct { - long a; + long long a; } c; void e(); Jakub