diff options
author | Jakub Jelinek <jakub@redhat.com> | 2016-02-24 14:54:39 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2016-02-24 14:54:39 +0100 |
commit | 89c0c1fd5c76569f66dc06fd2ecfa37704620151 (patch) | |
tree | 8c25e74e820762879c64b1e1c2217a6378901f04 /gcc | |
parent | 0683fd27deb878be38f120cce3acbe4d32132b20 (diff) | |
download | gcc-89c0c1fd5c76569f66dc06fd2ecfa37704620151.zip gcc-89c0c1fd5c76569f66dc06fd2ecfa37704620151.tar.gz gcc-89c0c1fd5c76569f66dc06fd2ecfa37704620151.tar.bz2 |
re PR middle-end/69915 (ICE: SIGSEGV with -O -ftracer with broken backtrace)
PR middle-end/69915
* tree.c (build_vector_from_ctor): Fix handling of VECTOR_CST
elements.
* gcc.dg/pr69915.c: New test.
From-SVN: r233664
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr69915.c | 15 | ||||
-rw-r--r-- | gcc/tree.c | 2 |
4 files changed, 27 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9f6ae5e..53376ae 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2016-02-24 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/69915 + * tree.c (build_vector_from_ctor): Fix handling of VECTOR_CST + elements. + 2016-02-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com> PR rtl-optimization/69886 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 710dd11..5b758dc 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2016-02-24 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/69915 + * gcc.dg/pr69915.c: New test. + 2016-02-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com> PR rtl-optimization/69886 diff --git a/gcc/testsuite/gcc.dg/pr69915.c b/gcc/testsuite/gcc.dg/pr69915.c new file mode 100644 index 0000000..4c60c59 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr69915.c @@ -0,0 +1,15 @@ +/* PR middle-end/69915 */ +/* { dg-do compile } */ +/* { dg-options "-O -ftracer" } */ + +typedef unsigned short V __attribute__ ((vector_size (32))); + +unsigned +foo (unsigned x, unsigned c, V *p) +{ + V v = *p; + if (c < 360) + v = (V) { 0 }; + v *= (V) { x }; + return v[1]; +} @@ -1749,7 +1749,7 @@ build_vector_from_ctor (tree type, vec<constructor_elt, va_gc> *v) else vec[pos++] = value; } - for (; idx < TYPE_VECTOR_SUBPARTS (type); ++idx) + while (pos < TYPE_VECTOR_SUBPARTS (type)) vec[pos++] = build_zero_cst (TREE_TYPE (type)); return build_vector (type, vec); |