This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [tuples] [patch] Fix in_phi in verify_expr
> Actually you do not need to walk the tree for t at all. In fact, PHI arguments
> need to be either SSA_NAMEs or is_gimple_min_invariant ()s. So
>
> /* Addressable variables do have SSA_NAMEs but they
> are not considered gimple values. */
>
> else if (TREE_CODE (t) != SSA_NAME
> && TREE_CODE (t) != FUNCTION_DECL
> && !is_gimple_val (t))
> {
>
> just becomes
>
> /* Addressable variables do have SSA_NAMEs but they
> are not considered gimple values. */
>
> else if (TREE_CODE (t) != SSA_NAME
> && TREE_CODE (t) != FUNCTION_DECL
> && !is_gimple_min_invariant (t))
> {
>
> (no idea where this FUNCTION_DECL is for - we should only see addresses
> of functions here?)
>
> Adding the SSA_NAME freelist test there is no need to further walk t at all
> (apart from for verify_node_sharing).
OK. I am going to test the attached patch on trunk.
It remove the in_phi variable and changes the is_gimple_val to
is_gimple_min_invariant.
> Richard.
>
Cheers,
--
Rafael Avila de Espindola
Google Ireland Ltd.
Gordon House
Barrow Street
Dublin 4
Ireland
Registered in Dublin, Ireland
Registration Number: 368047
Index: gcc/tree-cfg.c
===================================================================
--- gcc/tree-cfg.c (revision 133790)
+++ gcc/tree-cfg.c (working copy)
@@ -3113,7 +3113,6 @@
verify_expr (tree *tp, int *walk_subtrees, void *data ATTRIBUTE_UNUSED)
{
tree t = *tp, x;
- bool in_phi = (data != NULL);
if (TYPE_P (t))
*walk_subtrees = 0;
@@ -3164,23 +3163,6 @@
bool new_constant;
bool new_side_effects;
- /* ??? tree-ssa-alias.c may have overlooked dead PHI nodes, missing
- dead PHIs that take the address of something. But if the PHI
- result is dead, the fact that it takes the address of anything
- is irrelevant. Because we can not tell from here if a PHI result
- is dead, we just skip this check for PHIs altogether. This means
- we may be missing "valid" checks, but what can you do?
- This was PR19217. */
- if (in_phi)
- {
- if (!is_gimple_min_invariant (t))
- {
- error ("non-invariant address expression in PHI argument");
- return t;
- }
- break;
- }
-
old_invariant = TREE_INVARIANT (t);
old_constant = TREE_CONSTANT (t);
old_side_effects = TREE_SIDE_EFFECTS (t);
@@ -4338,7 +4320,7 @@
are not considered gimple values. */
else if (TREE_CODE (t) != SSA_NAME
&& TREE_CODE (t) != FUNCTION_DECL
- && !is_gimple_val (t))
+ && !is_gimple_min_invariant (t))
{
error ("PHI def is not a GIMPLE value");
debug_generic_stmt (phi);
@@ -4346,13 +4328,6 @@
err |= true;
}
- addr = walk_tree (&t, verify_expr, (void *) 1, NULL);
- if (addr)
- {
- debug_generic_stmt (addr);
- err |= true;
- }
-
addr = walk_tree (&t, verify_node_sharing, visited, NULL);
if (addr)
{