On Wed, May 15, 2019 at 12:20:42PM +0200, Martin Liška wrote:
> 2019-05-15 Martin Liska
>
> 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
>
> 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
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