continue;
}
+ if (gimple_call_internal_p (stmt, IFN_DEFERRED_INIT))
+ {
+ have_local_clobbers = true;
+ continue;
+ }
+
if (b)
TREE_USED (b) = true;
to remove them if they are the only references to a local variable,
but we want to retain them when there's any other. So the first pass
ignores them, and the second pass (if there were any) tries to remove
- them. */
+ them. We do the same for .DEFERRED_INIT. */
if (have_local_clobbers)
FOR_EACH_BB_FN (bb, cfun)
{
if (b)
TREE_USED (b) = true;
}
+ else if (gimple_call_internal_p (stmt, IFN_DEFERRED_INIT))
+ {
+ tree lhs = gimple_call_lhs (stmt);
+ if (DECL_P (lhs) && !is_used_p (lhs))
+ {
+ unlink_stmt_vdef (stmt);
+ gsi_remove (&gsi, true);
+ release_defs (stmt);
+ continue;
+ }
+ if (b)
+ TREE_USED (b) = true;
+ }
else if (gimple_debug_bind_p (stmt))
{
tree var = gimple_debug_bind_get_var (stmt);