From 52cdcfb7b4733ab7190b9699926407dc22f1b0fa Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 11 Apr 2018 15:35:13 +0200 Subject: [PATCH] re PR tree-optimization/85331 (during GIMPLE pass, internal compiler error: Segmentation fault (-O1 and above)) PR tree-optimization/85331 * vec-perm-indices.h (vec_perm_indices::clamp): Change input type from int to HOST_WIDE_INT. * gcc.c-torture/execute/pr85331.c: New test. From-SVN: r259320 --- gcc/ChangeLog | 6 ++++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.c-torture/execute/pr85331.c | 22 ++++++++++++++++++++++ gcc/vec-perm-indices.h | 2 +- 4 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.c-torture/execute/pr85331.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7964b38..96c7c28 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-04-11 Jakub Jelinek + + PR tree-optimization/85331 + * vec-perm-indices.h (vec_perm_indices::clamp): Change input type + from int to HOST_WIDE_INT. + 2018-04-11 Martin Jambor PR ipa/84149 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 186986a..b473add 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-04-11 Jakub Jelinek + + PR tree-optimization/85331 + * gcc.c-torture/execute/pr85331.c: New test. + 2018-04-11 Marek Polacek PR c++/85032 diff --git a/gcc/testsuite/gcc.c-torture/execute/pr85331.c b/gcc/testsuite/gcc.c-torture/execute/pr85331.c new file mode 100644 index 0000000..3ef805a --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr85331.c @@ -0,0 +1,22 @@ +/* PR tree-optimization/85331 */ + +typedef double V __attribute__((vector_size (2 * sizeof (double)))); +typedef long long W __attribute__((vector_size (2 * sizeof (long long)))); + +__attribute__((noipa)) void +foo (V *r) +{ + V y = { 1.0, 2.0 }; + W m = { 10000000001LL, 0LL }; + *r = __builtin_shuffle (y, m); +} + +int +main () +{ + V r; + foo (&r); + if (r[0] != 2.0 || r[1] != 1.0) + __builtin_abort (); + return 0; +} diff --git a/gcc/vec-perm-indices.h b/gcc/vec-perm-indices.h index 429a4e8..d805fbb 100644 --- a/gcc/vec-perm-indices.h +++ b/gcc/vec-perm-indices.h @@ -119,7 +119,7 @@ inline vec_perm_indices::element_type vec_perm_indices::clamp (element_type elt) const { element_type limit = input_nelts (), elem_within_input; - int input; + HOST_WIDE_INT input; if (!can_div_trunc_p (elt, limit, &input, &elem_within_input)) return elt; -- 2.7.4