> This is an updated version of the patch. I have 2 new patches and an
> updated testcase which I will sent out individually.
>
> Patch set was bootstrapped and reg-tested on x86_64.
>
> Ok for trunk?
>
> Thanks,
> - Tom
>
> 2011-07-30  Tom de Vries  <t...@codesourcery.com>
>
>       PR middle-end/43513
>       * Makefile.in (tree-ssa-ccp.o): Add $(PARAMS_H) to rule.
>       * tree-ssa-ccp.c (params.h): Include.
>       (fold_builtin_alloca_for_var): New function.
>       (ccp_fold_stmt): Use fold_builtin_alloca_for_var.

We have detected another fallout on some Ada code: the transformation replaces 
a call to __builtin_alloca with &var, i.e. it introduces an aliased variable, 
which invalidates the points-to information of some subsequent call, fooling 
DSE into thinking that it can eliminate a live store.

The brute force approach

Index: tree-ssa-ccp.c
===================================================================
--- tree-ssa-ccp.c      (revision 179038)
+++ tree-ssa-ccp.c      (working copy)
@@ -2014,7 +2014,10 @@ do_ssa_ccp (void)
   ccp_initialize ();
   ssa_propagate (ccp_visit_stmt, ccp_visit_phi_node);
   if (ccp_finalize ())
-    return (TODO_cleanup_cfg | TODO_update_ssa | TODO_remove_unused_locals);
+    return (TODO_cleanup_cfg
+           | TODO_update_ssa
+           | TODO_rebuild_alias
+           | TODO_remove_unused_locals);
   else
     return 0;
 }

works, but we might want to be move clever.  Thoughts?

-- 
Eric Botcazou

Reply via email to