re PR middle-end/20030 (Broken arguments access)
2005-02-18 Andrew Pinski <pinskia@physics.uc.edu> PR middle-end/20030 * fold-const.c (fold_indirect_ref_1): Use the correct index for zero access, the lower bound of the array type if it exists. From-SVN: r95226
This commit is contained in:
parent
2aabee29e1
commit
0d56ab3348
@ -1,3 +1,9 @@
|
||||
2005-02-18 Andrew Pinski <pinskia@physics.uc.edu>
|
||||
|
||||
PR middle-end/20030
|
||||
* fold-const.c (fold_indirect_ref_1): Use the correct index for zero access,
|
||||
the lower bound of the array type if it exists.
|
||||
|
||||
2005-02-18 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
PR c++/20008
|
||||
|
@ -11258,15 +11258,26 @@ fold_indirect_ref_1 (tree t)
|
||||
/* *(foo *)&fooarray => fooarray[0] */
|
||||
else if (TREE_CODE (optype) == ARRAY_TYPE
|
||||
&& lang_hooks.types_compatible_p (type, TREE_TYPE (optype)))
|
||||
return build4 (ARRAY_REF, type, op, size_zero_node, NULL_TREE, NULL_TREE);
|
||||
{
|
||||
tree type_domain = TYPE_DOMAIN (optype);
|
||||
tree min_val = size_zero_node;
|
||||
if (type_domain && TYPE_MIN_VALUE (type_domain))
|
||||
min_val = TYPE_MIN_VALUE (type_domain);
|
||||
return build4 (ARRAY_REF, type, op, min_val, NULL_TREE, NULL_TREE);
|
||||
}
|
||||
}
|
||||
|
||||
/* *(foo *)fooarrptr => (*fooarrptr)[0] */
|
||||
if (TREE_CODE (TREE_TYPE (subtype)) == ARRAY_TYPE
|
||||
&& lang_hooks.types_compatible_p (type, TREE_TYPE (TREE_TYPE (subtype))))
|
||||
{
|
||||
tree type_domain;
|
||||
tree min_val = size_zero_node;
|
||||
sub = build_fold_indirect_ref (sub);
|
||||
return build4 (ARRAY_REF, type, sub, size_zero_node, NULL_TREE, NULL_TREE);
|
||||
type_domain = TYPE_DOMAIN (TREE_TYPE (sub));
|
||||
if (type_domain && TYPE_MIN_VALUE (type_domain))
|
||||
min_val = TYPE_MIN_VALUE (type_domain);
|
||||
return build4 (ARRAY_REF, type, sub, min_val, NULL_TREE, NULL_TREE);
|
||||
}
|
||||
|
||||
return NULL_TREE;
|
||||
|
Loading…
Reference in New Issue
Block a user