mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-21 05:00:23 +08:00
re PR middle-end/35043 (ICE in tree-data-ref because signed_type_for_types returns NULL)
2008-02-04 Richard Guenther <rguenther@suse.de> PR middle-end/35043 * gimplify.c (gimplify_init_ctor_eval): Convert array indices to TYPE_DOMAINs base type instead of using bitsizetype here. * gcc.c-torture/compile/pr35043.c: New testcase. From-SVN: r132091
This commit is contained in:
parent
0fcedd9c98
commit
1a1640dbb3
@ -1,3 +1,9 @@
|
||||
2008-02-04 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/35043
|
||||
* gimplify.c (gimplify_init_ctor_eval): Convert array indices
|
||||
to TYPE_DOMAINs base type instead of using bitsizetype here.
|
||||
|
||||
2008-02-03 Jason Merrill <jason@redhat.com>
|
||||
|
||||
* print-tree.c (print_node) [CONSTRUCTOR]: Print elements.
|
||||
|
@ -3096,6 +3096,10 @@ gimplify_init_ctor_eval (tree object, VEC(constructor_elt,gc) *elts,
|
||||
|
||||
if (array_elt_type)
|
||||
{
|
||||
/* Do not use bitsizetype for ARRAY_REF indices. */
|
||||
if (TYPE_DOMAIN (TREE_TYPE (object)))
|
||||
purpose = fold_convert (TREE_TYPE (TYPE_DOMAIN (TREE_TYPE (object))),
|
||||
purpose);
|
||||
cref = build4 (ARRAY_REF, array_elt_type, unshare_expr (object),
|
||||
purpose, NULL_TREE, NULL_TREE);
|
||||
}
|
||||
|
@ -1,3 +1,8 @@
|
||||
2008-02-04 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/35043
|
||||
* gcc.c-torture/compile/pr35043.c: New testcase.
|
||||
|
||||
2008-02-03 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
|
||||
|
||||
* g++.dg/tree-ssa/ivopts-1.C: Remove xfail for hppa*-*-*.
|
||||
|
20
gcc/testsuite/gcc.c-torture/compile/pr35043.c
Normal file
20
gcc/testsuite/gcc.c-torture/compile/pr35043.c
Normal file
@ -0,0 +1,20 @@
|
||||
typedef long unsigned int size_t;
|
||||
typedef struct {
|
||||
long double dat[2];
|
||||
} gsl_complex_long_double;
|
||||
typedef struct {
|
||||
size_t size;
|
||||
size_t stride;
|
||||
long double *data;
|
||||
} gsl_vector_complex_long_double;
|
||||
void gsl_vector_complex_long_double_set_zero (gsl_vector_complex_long_double * v)
|
||||
{
|
||||
long double * const data = v->data;
|
||||
const size_t n = v->size;
|
||||
const size_t stride = v->stride;
|
||||
const gsl_complex_long_double zero = { { 0.0L,0.0L} } ;
|
||||
size_t i;
|
||||
for (i = 0; i < n; i++)
|
||||
*(gsl_complex_long_double *) (data + 2 * i * stride) = zero;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user