From: Jakub Jelinek Date: Wed, 11 Apr 2018 13:35:13 +0000 (+0200) Subject: re PR tree-optimization/85331 (during GIMPLE pass, internal compiler error: Segmentat... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=52cdcfb7b4733ab7190b9699926407dc22f1b0fa;p=gcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7964b384d0b..96c7c2874ae 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 186986aafe4..b473add86db 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 00000000000..3ef805a289e --- /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 429a4e86054..d805fbb8f76 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;