* ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.

From-SVN: r120849
This commit is contained in:
Jan Hubicka 2007-01-17 12:16:24 +01:00 committed by Jan Hubicka
parent 30fd45a0b2
commit dd82a6c6f6
2 changed files with 19 additions and 20 deletions

View File

@ -1,3 +1,7 @@
2007-01-17 Jan Hubicka <jh@suse.cz>
* ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
2007-01-17 Eric Christopher <echristo@apple.com>
* config.gcc: Support core2 processor.

View File

@ -920,26 +920,21 @@ look_for_casts (tree lhs __attribute__((unused)), tree t)
tree castfromvar = TREE_OPERAND (t, 0);
check_cast (TREE_TYPE (t), castfromvar);
}
else if (TREE_CODE (t) == COMPONENT_REF
|| TREE_CODE (t) == INDIRECT_REF
|| TREE_CODE (t) == BIT_FIELD_REF)
{
tree base = get_base_address (t);
while (t != base)
{
t = TREE_OPERAND (t, 0);
if (TREE_CODE (t) == VIEW_CONVERT_EXPR)
{
/* This may be some part of a component ref.
IE it may be a.b.VIEW_CONVERT_EXPR<weird_type>(c).d, AFAIK.
castfromref will give you a.b.c, not a. */
tree castfromref = TREE_OPERAND (t, 0);
check_cast (TREE_TYPE (t), castfromref);
}
else if (TREE_CODE (t) == COMPONENT_REF)
get_canon_type (TREE_TYPE (TREE_OPERAND (t, 1)), false, false);
}
}
else
while (handled_component_p (t))
{
t = TREE_OPERAND (t, 0);
if (TREE_CODE (t) == VIEW_CONVERT_EXPR)
{
/* This may be some part of a component ref.
IE it may be a.b.VIEW_CONVERT_EXPR<weird_type>(c).d, AFAIK.
castfromref will give you a.b.c, not a. */
tree castfromref = TREE_OPERAND (t, 0);
check_cast (TREE_TYPE (t), castfromref);
}
else if (TREE_CODE (t) == COMPONENT_REF)
get_canon_type (TREE_TYPE (TREE_OPERAND (t, 1)), false, false);
}
}
/* Check to see if T is a read or address of operation on a static var