diff options
author | Jakub Jelinek <jakub@redhat.com> | 2018-04-11 15:35:13 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2018-04-11 15:35:13 +0200 |
commit | 52cdcfb7b4733ab7190b9699926407dc22f1b0fa (patch) | |
tree | f82f6677df53ba811efe0dad4e8fc77fb5c4fd2d /gcc | |
parent | 7b668576fc09c86a301087f464e195678cb0aea0 (diff) | |
download | gcc-52cdcfb7b4733ab7190b9699926407dc22f1b0fa.zip gcc-52cdcfb7b4733ab7190b9699926407dc22f1b0fa.tar.gz gcc-52cdcfb7b4733ab7190b9699926407dc22f1b0fa.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/pr85331.c | 22 | ||||
-rw-r--r-- | gcc/vec-perm-indices.h | 2 |
4 files changed, 34 insertions, 1 deletions
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 <jakub@redhat.com> + + 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 <mjambor@suse.cz> 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 <jakub@redhat.com> + + PR tree-optimization/85331 + * gcc.c-torture/execute/pr85331.c: New test. + 2018-04-11 Marek Polacek <polacek@redhat.com> 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; |