mirror of git://gcc.gnu.org/git/gcc.git
re PR middle-end/50609 (FAIL: gcc.c-torture/execute/pr23135.c compilation, -O2 -flto (ICE))
2011-10-05 Richard Guenther <rguenther@suse.de> PR tree-optimization/50609 * gimple-fold.c (fold_array_ctor_reference): Also handle vector typed constructors. (fold_ctor_reference): Dispatch to fold_array_ctor_reference for vector typed constructors. From-SVN: r179540
This commit is contained in:
parent
2c893b9dbc
commit
eb8f1123d9
|
@ -1,3 +1,11 @@
|
||||||
|
2011-10-05 Richard Guenther <rguenther@suse.de>
|
||||||
|
|
||||||
|
PR tree-optimization/50609
|
||||||
|
* gimple-fold.c (fold_array_ctor_reference): Also handle
|
||||||
|
vector typed constructors.
|
||||||
|
(fold_ctor_reference): Dispatch to fold_array_ctor_reference
|
||||||
|
for vector typed constructors.
|
||||||
|
|
||||||
2011-10-05 Uros Bizjak <ubizjak@gmail.com>
|
2011-10-05 Uros Bizjak <ubizjak@gmail.com>
|
||||||
|
|
||||||
* config/i386/i386.c (ix86_emit_binop): New static function.
|
* config/i386/i386.c (ix86_emit_binop): New static function.
|
||||||
|
|
|
@ -2747,10 +2747,12 @@ fold_array_ctor_reference (tree type, tree ctor,
|
||||||
double_int low_bound, elt_size;
|
double_int low_bound, elt_size;
|
||||||
double_int index, max_index;
|
double_int index, max_index;
|
||||||
double_int access_index;
|
double_int access_index;
|
||||||
tree domain_type = TYPE_DOMAIN (TREE_TYPE (ctor));
|
tree domain_type = NULL_TREE;
|
||||||
HOST_WIDE_INT inner_offset;
|
HOST_WIDE_INT inner_offset;
|
||||||
|
|
||||||
/* Compute low bound and elt size. */
|
/* Compute low bound and elt size. */
|
||||||
|
if (TREE_CODE (TREE_TYPE (ctor)) == ARRAY_TYPE)
|
||||||
|
domain_type = TYPE_DOMAIN (TREE_TYPE (ctor));
|
||||||
if (domain_type && TYPE_MIN_VALUE (domain_type))
|
if (domain_type && TYPE_MIN_VALUE (domain_type))
|
||||||
{
|
{
|
||||||
/* Static constructors for variably sized objects makes no sense. */
|
/* Static constructors for variably sized objects makes no sense. */
|
||||||
|
@ -2917,7 +2919,8 @@ fold_ctor_reference (tree type, tree ctor, unsigned HOST_WIDE_INT offset,
|
||||||
if (TREE_CODE (ctor) == CONSTRUCTOR)
|
if (TREE_CODE (ctor) == CONSTRUCTOR)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (TREE_CODE (TREE_TYPE (ctor)) == ARRAY_TYPE)
|
if (TREE_CODE (TREE_TYPE (ctor)) == ARRAY_TYPE
|
||||||
|
|| TREE_CODE (TREE_TYPE (ctor)) == VECTOR_TYPE)
|
||||||
return fold_array_ctor_reference (type, ctor, offset, size);
|
return fold_array_ctor_reference (type, ctor, offset, size);
|
||||||
else
|
else
|
||||||
return fold_nonarray_ctor_reference (type, ctor, offset, size);
|
return fold_nonarray_ctor_reference (type, ctor, offset, size);
|
||||||
|
|
Loading…
Reference in New Issue