diff options
author | Richard Guenther <rguenther@suse.de> | 2011-03-14 12:20:48 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2011-03-14 12:20:48 +0000 |
commit | 7f4d6e1beb079e85cf99fc1f4df2e1732beda67c (patch) | |
tree | eecb2902ac6eba928a764de20f2feb8d0e72be95 /gcc | |
parent | c6104ef1c3ce9c543dcc6b2c3b5c3aca04dcadad (diff) | |
download | gcc-7f4d6e1beb079e85cf99fc1f4df2e1732beda67c.zip gcc-7f4d6e1beb079e85cf99fc1f4df2e1732beda67c.tar.gz gcc-7f4d6e1beb079e85cf99fc1f4df2e1732beda67c.tar.bz2 |
re PR tree-optimization/48098 (internal compiler error: in build_vector_from_val, at tree.c:1380)
2011-03-14 Richard Guenther <rguenther@suse.de>
PR middle-end/48098
* tree.c (build_vector_from_val): Adjust assert to requirements
and reality.
* gcc.dg/torture/pr48098.c: New testcase.
From-SVN: r170934
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/torture/pr48098.c | 12 | ||||
-rw-r--r-- | gcc/tree.c | 10 |
4 files changed, 31 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bedecef..086d1ba 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2011-03-14 Richard Guenther <rguenther@suse.de> + + PR middle-end/48098 + * tree.c (build_vector_from_val): Adjust assert to requirements + and reality. + 2011-03-14 Jakub Jelinek <jakub@redhat.com> PR bootstrap/48102 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0ea0946..2356b1d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-03-14 Richard Guenther <rguenther@suse.de> + + PR middle-end/48098 + * gcc.dg/torture/pr48098.c: New testcase. + 2011-03-12 Peter Bergner <bergner@vnet.ibm.com> PR target/48053 diff --git a/gcc/testsuite/gcc.dg/torture/pr48098.c b/gcc/testsuite/gcc.dg/torture/pr48098.c new file mode 100644 index 0000000..cd72939 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr48098.c @@ -0,0 +1,12 @@ +/* { dg-do compile } */ + +void +foo (int n) +{ + static char *__restrict *p; + int i; + p = __builtin_malloc (n); + for (i = 0; i < n; i++) + p[i] = 0; +} + @@ -1376,8 +1376,14 @@ build_vector_from_val (tree vectype, tree sc) if (sc == error_mark_node) return sc; - gcc_assert (useless_type_conversion_p (TREE_TYPE (sc), - TREE_TYPE (vectype))); + /* Verify that the vector type is suitable for SC. Note that there + is some inconsistency in the type-system with respect to restrict + qualifications of pointers. Vector types always have a main-variant + element type and the qualification is applied to the vector-type. + So TREE_TYPE (vector-type) does not return a properly qualified + vector element-type. */ + gcc_checking_assert (types_compatible_p (TYPE_MAIN_VARIANT (TREE_TYPE (sc)), + TREE_TYPE (vectype))); v = VEC_alloc (constructor_elt, gc, nunits); for (i = 0; i < nunits; ++i) |