public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH]: Transform compute_may_aliases into a TODO
@ 2007-08-10 20:55 Daniel Berlin
  2007-08-10 21:07 ` Andrew Pinski
  2007-08-14 14:08 ` Diego Novillo
  0 siblings, 2 replies; 4+ messages in thread
From: Daniel Berlin @ 2007-08-10 20:55 UTC (permalink / raw)
  To: GCC Patches, Diego Novillo

[-- Attachment #1: Type: text/plain, Size: 2105 bytes --]

We often recompute aliases even when absolutely nothing has changed.
This is quite wasteful.
The attached changes compute_may_aliases into a TODO, and we now only
run it when we've changed things that could destroy aliases.

Well, almost.  Everywhere but PRE this is true.  We still run aliasing
all the time after PRE, mainly because i haven't gotten the condition
quite right in PRE yet, so i left it out of the patch.

I also completely removed the may_alias after DSE, it wasn't clear
what this was trying to do or why it was there.

Sadly, the one annoying part is that there is now no easy way to put
all the aliasing stuff into their own numbered dumps.   For 4.4, i'd
really like to redo our pass manager to support this (and maybe
support a better notion of analysis, so that individual passes that
currently calculate/free dominators on their own, would just say "i
need dominators, i destroy dominators", and it is taken care of for
them).  The dump file part shouldn't be that much work, we just always
compute the pass number rather than only once per function.  We also
then track how many times we have seen a thing named "whatever", and
come up with a dump name that way.

I changed the tests looking in .alias1, to look in .salias, which is
where alias1 is now really going.

--Dan

Bootstrapped and regtested on i686-darwin.
Okay for mainline?
2007-08-10  Daniel Berlin  <dberlin@dberlin.org>

	* tree-pass.h (PROP_pta): Removed.
	(TODO_rebuild_alias): New.
	(pass_may_alias): Removed.
	* tree-ssa-ccp.c (execute_fold_all_builtins): Only rebuild
	aliasing if we changed something.
	* tree-ssa-alias.c (compute_may_aliases): Make non-static.  Update
	SSA internally.
	(pass_may_alias): Removed.
	(create_structure_vars): Return TODO_rebuild_alias.
	* tree-ssa-pre.c (do_pre): Return TODO_rebuild_alias.
	* tree-sra.c (tree_sra): Only rebuild aliasing if something
	changed.
	(tree_sra_early): We never affect aliasing right now.
	* tree-flow.h (compute_may_aliases): New prototype.
	* passes.c: Remove pass_may_alias from the passes.
	(execute_function_todo): Support TODO_rebuild_alias.

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: mayaliastodo.diff --]
[-- Type: text/x-diff; name="mayaliastodo.diff", Size: 15856 bytes --]

Index: tree-pass.h
===================================================================
--- tree-pass.h	(revision 127319)
+++ tree-pass.h	(working copy)
@@ -149,12 +149,11 @@ struct dump_file_info
 #define PROP_gimple_leh		(1 << 2)	/* lowered eh */
 #define PROP_cfg		(1 << 3)
 #define PROP_referenced_vars	(1 << 4)
-#define PROP_pta		(1 << 5)
-#define PROP_ssa		(1 << 6)
-#define PROP_no_crit_edges      (1 << 7)
-#define PROP_rtl		(1 << 8)
-#define PROP_alias		(1 << 9)
-#define PROP_gimple_lomp	(1 << 10)	/* lowered OpenMP directives */
+#define PROP_ssa		(1 << 5)
+#define PROP_no_crit_edges      (1 << 6)
+#define PROP_rtl		(1 << 7)
+#define PROP_alias		(1 << 8)
+#define PROP_gimple_lomp	(1 << 9)	/* lowered OpenMP directives */
 
 #define PROP_trees \
   (PROP_gimple_any | PROP_gimple_lcf | PROP_gimple_leh | PROP_gimple_lomp)
@@ -228,6 +227,9 @@ struct dump_file_info
 /* Internally used for the first instance of a pass.  */
 #define TODO_mark_first_instance	(1 << 18)
 
+/* Rebuild aliasing info.  */
+#define TODO_rebuild_alias                (1 << 19)
+
 #define TODO_update_ssa_any		\
     (TODO_update_ssa			\
      | TODO_update_ssa_no_phi		\
@@ -278,7 +280,6 @@ extern struct tree_opt_pass pass_dce;
 extern struct tree_opt_pass pass_dce_loop;
 extern struct tree_opt_pass pass_cd_dce;
 extern struct tree_opt_pass pass_merge_phi;
-extern struct tree_opt_pass pass_may_alias;
 extern struct tree_opt_pass pass_split_crit_edges;
 extern struct tree_opt_pass pass_pre;
 extern struct tree_opt_pass pass_profile;
Index: tree-ssa-ccp.c
===================================================================
--- tree-ssa-ccp.c	(revision 127319)
+++ tree-ssa-ccp.c	(working copy)
@@ -2640,6 +2640,8 @@ execute_fold_all_builtins (void)
 {
   bool cfg_changed = false;
   basic_block bb;
+  unsigned int todoflags = 0;
+  
   FOR_EACH_BB (bb)
     {
       block_stmt_iterator i;
@@ -2697,6 +2699,7 @@ execute_fold_all_builtins (void)
 		{
 		  bool ok = set_rhs (stmtp, result);
 		  gcc_assert (ok);
+		  todoflags |= TODO_rebuild_alias;
 		}
 	    }
 
@@ -2728,9 +2731,12 @@ execute_fold_all_builtins (void)
 	    bsi_next (&i);
 	}
     }
-
+  
   /* Delete unreachable blocks.  */
-  return cfg_changed ? TODO_cleanup_cfg : 0;
+  if (cfg_changed)
+    todoflags |= TODO_cleanup_cfg;
+  
+  return todoflags;
 }
 
 
Index: tree-ssa-alias.c
===================================================================
--- tree-ssa-alias.c	(revision 127319)
+++ tree-ssa-alias.c	(working copy)
@@ -1634,10 +1634,12 @@ done:
    grouped to avoid severe compile-time slow downs and memory
    consumption. See compute_memory_partitions.  */
 
-static unsigned int
+unsigned int
 compute_may_aliases (void)
 {
   struct alias_info *ai;
+
+  timevar_push (TV_TREE_MAY_ALIAS);
   
   memset (&alias_stats, 0, sizeof (alias_stats));
 
@@ -1731,33 +1733,15 @@ compute_may_aliases (void)
 
   /* Deallocate memory used by aliasing data structures.  */
   delete_alias_info (ai);
+
+  if (need_ssa_update_p ())
+    update_ssa (TODO_update_ssa);
+
+  timevar_pop (TV_TREE_MAY_ALIAS);
   
   return 0;
 }
 
-
-struct tree_opt_pass pass_may_alias = 
-{
-  "alias",				/* name */
-  NULL,					/* gate */
-  compute_may_aliases,			/* execute */
-  NULL,					/* sub */
-  NULL,					/* next */
-  0,					/* static_pass_number */
-  TV_TREE_MAY_ALIAS,			/* tv_id */
-  PROP_cfg | PROP_ssa,			/* properties_required */
-  PROP_alias,				/* properties_provided */
-  0,					/* properties_destroyed */
-  0,					/* todo_flags_start */
-  TODO_dump_func
-    | TODO_update_ssa
-    | TODO_ggc_collect
-    | TODO_verify_ssa
-    | TODO_verify_stmts, 		/* todo_flags_finish */
-  0					/* letter */
-};
-
-
 /* Data structure used to count the number of dereferences to PTR
    inside an expression.  */
 struct count_ptr_d
@@ -4028,7 +4012,7 @@ create_structure_vars (void)
 	  }
       }
 
-  return 0;
+  return TODO_rebuild_alias;
 }
 
 static bool
Index: tree-ssa-pre.c
===================================================================
--- tree-ssa-pre.c	(revision 127319)
+++ tree-ssa-pre.c	(working copy)
@@ -3981,7 +3981,7 @@ static unsigned int
 do_pre (void)
 {
   execute_pre (false);
-  return 0;
+  return TODO_rebuild_alias;
 }
 
 static bool
Index: tree-sra.c
===================================================================
--- tree-sra.c	(revision 127319)
+++ tree-sra.c	(working copy)
@@ -2400,6 +2400,8 @@ tree_sra (void)
       scan_function ();
       decide_instantiations ();
       scalarize_function ();
+      if (!bitmap_empty_p (sra_candidates))
+	todoflags |= TODO_rebuild_alias;
     }
 
   /* Free allocated memory.  */
@@ -2422,7 +2424,7 @@ tree_sra_early (void)
   ret = tree_sra ();
   early_sra = false;
 
-  return ret;
+  return ret & ~TODO_rebuild_alias;
 }
 
 static bool
Index: tree-flow.h
===================================================================
--- tree-flow.h	(revision 127319)
+++ tree-flow.h	(working copy)
@@ -825,6 +825,7 @@ extern void record_vars (tree);
 extern bool block_may_fallthru (tree);
 
 /* In tree-ssa-alias.c  */
+extern unsigned int compute_may_aliases (void);
 extern void dump_may_aliases_for (FILE *, tree);
 extern void debug_may_aliases_for (tree);
 extern void dump_alias_info (FILE *);
Index: passes.c
===================================================================
--- passes.c	(revision 127319)
+++ passes.c	(working copy)
@@ -551,7 +551,6 @@ init_optimization_passes (void)
     {
       struct tree_opt_pass **p = &pass_all_optimizations.sub;
       NEXT_PASS (pass_create_structure_vars);
-      NEXT_PASS (pass_may_alias);
       NEXT_PASS (pass_return_slot);
       NEXT_PASS (pass_rename_ssa_copies);
 
@@ -566,26 +565,19 @@ init_optimization_passes (void)
       NEXT_PASS (pass_vrp);
       NEXT_PASS (pass_dce);
       NEXT_PASS (pass_dominator);
-
       /* The only const/copy propagation opportunities left after
 	 DOM should be due to degenerate PHI nodes.  So rather than
 	 run the full propagators, run a specialized pass which
 	 only examines PHIs to discover const/copy propagation
 	 opportunities.  */
       NEXT_PASS (pass_phi_only_cprop);
-
       NEXT_PASS (pass_tree_ifcombine);
       NEXT_PASS (pass_phiopt);
-      NEXT_PASS (pass_may_alias);
       NEXT_PASS (pass_tail_recursion);
       NEXT_PASS (pass_ch);
       NEXT_PASS (pass_stdarg);
       NEXT_PASS (pass_lower_complex);
       NEXT_PASS (pass_sra);
-      /* FIXME: SRA may generate arbitrary gimple code, exposing new
-	 aliased and call-clobbered variables.  As mentioned below,
-	 pass_may_alias should be a TODO item.  */
-      NEXT_PASS (pass_may_alias);
       NEXT_PASS (pass_rename_ssa_copies);
       NEXT_PASS (pass_dominator);
 
@@ -599,7 +591,6 @@ init_optimization_passes (void)
       NEXT_PASS (pass_reassoc);
       NEXT_PASS (pass_dce);
       NEXT_PASS (pass_dse);
-      NEXT_PASS (pass_may_alias);
       NEXT_PASS (pass_forwprop);
       NEXT_PASS (pass_phiopt);
       NEXT_PASS (pass_object_sizes);
@@ -610,10 +601,8 @@ init_optimization_passes (void)
       /* FIXME: May alias should a TODO but for 4.0.0,
 	 we add may_alias right after fold builtins
 	 which can create arbitrary GIMPLE.  */
-      NEXT_PASS (pass_may_alias);
       NEXT_PASS (pass_split_crit_edges);
       NEXT_PASS (pass_pre);
-      NEXT_PASS (pass_may_alias);
       NEXT_PASS (pass_sink_code);
       NEXT_PASS (pass_tree_loop);
 	{
@@ -637,9 +626,6 @@ init_optimization_passes (void)
 	      NEXT_PASS (pass_lower_vector_ssa);
 	      NEXT_PASS (pass_dce_loop);
 	    }
-	  /* NEXT_PASS (pass_may_alias) cannot be done again because the
-	     vectorizer creates alias relations that are not supported by
-	     pass_may_alias.  */
 	  NEXT_PASS (pass_complete_unroll);
 	  NEXT_PASS (pass_loop_prefetch);
 	  NEXT_PASS (pass_iv_optimize);
@@ -650,7 +636,7 @@ init_optimization_passes (void)
       NEXT_PASS (pass_reassoc);
       NEXT_PASS (pass_vrp);
       NEXT_PASS (pass_dominator);
-
+      
       /* The only const/copy propagation opportunities left after
 	 DOM should be due to degenerate PHI nodes.  So rather than
 	 run the full propagators, run a specialized pass which
@@ -912,7 +898,13 @@ execute_function_todo (void *data)
       update_ssa (update_flags);
       cfun->last_verified &= ~TODO_verify_ssa;
     }
-
+  
+  if (flags & TODO_rebuild_alias)
+    {
+      compute_may_aliases ();
+      cfun->curr_properties |= PROP_alias;
+    }
+  
   if (flags & TODO_remove_unused_locals)
     remove_unused_locals ();
 
Index: testsuite/gcc.dg/tree-ssa/20040911-1.c
===================================================================
--- testsuite/gcc.dg/tree-ssa/20040911-1.c	(revision 127319)
+++ testsuite/gcc.dg/tree-ssa/20040911-1.c	(working copy)
@@ -1,7 +1,7 @@
 /* Verify that points-to information is handled properly for PTR + OFFSET
    pointer arithmetics.  */
 /* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-alias1-vops" } */
+/* { dg-options "-O2 -fdump-tree-salias-vops" } */
 
 char buf[4], *q;
 int foo (int i)
@@ -18,5 +18,5 @@ int foo (int i)
   return *p;
 }
 
-/* { dg-final { scan-tree-dump-not "VUSE <c" "alias1" } } */
-/* { dg-final { cleanup-tree-dump "alias1" } } */
+/* { dg-final { scan-tree-dump-not "VUSE <c" "salias" } } */
+/* { dg-final { cleanup-tree-dump "salias" } } */
Index: testsuite/gcc.dg/tree-ssa/20040517-1.c
===================================================================
--- testsuite/gcc.dg/tree-ssa/20040517-1.c	(revision 127319)
+++ testsuite/gcc.dg/tree-ssa/20040517-1.c	(working copy)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O1 -fdump-tree-alias1-vops" } */
+/* { dg-options "-O1 -fdump-tree-salias-vops" } */
 extern void abort (void);
 int a; 
  
@@ -17,5 +17,5 @@ void bar (void) 
    malloc functions may clobber global memory.  Only the function result
    does not alias any other pointer.
    Hence, we must have a VDEF for a before and after the call to foo().  */
-/* { dg-final { scan-tree-dump-times "VDEF" 2 "alias1"} } */
-/* { dg-final { cleanup-tree-dump "alias1" } } */
+/* { dg-final { scan-tree-dump-times "VDEF" 2 "salias"} } */
+/* { dg-final { cleanup-tree-dump "salias" } } */
Index: testsuite/gcc.dg/tree-ssa/pr26421.c
===================================================================
--- testsuite/gcc.dg/tree-ssa/pr26421.c	(revision 127319)
+++ testsuite/gcc.dg/tree-ssa/pr26421.c	(working copy)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-alias1-vops" } */
+/* { dg-options "-O2 -fdump-tree-salias-vops" } */
 
 typedef struct {
   int i;
@@ -16,5 +16,5 @@ int foo(void)
   return a.i;
 }
 
-/* { dg-final { scan-tree-dump-times "VDEF" 2 "alias1" } } */
-/* { dg-final { cleanup-tree-dump "alias1" } } */
+/* { dg-final { scan-tree-dump-times "VDEF" 2 "salias" } } */
+/* { dg-final { cleanup-tree-dump "salias" } } */
Index: testsuite/gcc.dg/tree-ssa/pr23382.c
===================================================================
--- testsuite/gcc.dg/tree-ssa/pr23382.c	(revision 127319)
+++ testsuite/gcc.dg/tree-ssa/pr23382.c	(working copy)
@@ -13,12 +13,12 @@ int f(void)
    struct a *a = malloc(sizeof(struct a));
    return a->length;
 }
-/* { dg-final { scan-tree-dump-times "VDEF <HEAP" 1 "alias1"} } */
+/* { dg-final { scan-tree-dump-times "VDEF <HEAP" 1 "salias"} } */
 /* { dg-final { scan-tree-dump-times "VDEF <HEAP" 1 "alias2"} } */
 /* { dg-final { scan-tree-dump-times "VDEF <HEAP" 1 "alias3"} } */
 /* { dg-final { scan-tree-dump-times "VDEF <HEAP" 1 "alias4"} } */
 /* { dg-final { scan-tree-dump-times "VDEF <HEAP" 1 "alias5"} } */
-/* { dg-final { cleanup-tree-dump "alias1" } } */
+/* { dg-final { cleanup-tree-dump "salias" } } */
 /* { dg-final { cleanup-tree-dump "alias2" } } */
 /* { dg-final { cleanup-tree-dump "alias3" } } */
 /* { dg-final { cleanup-tree-dump "alias4" } } */
Index: testsuite/gcc.dg/tree-ssa/inline_asm-1.c
===================================================================
--- testsuite/gcc.dg/tree-ssa/inline_asm-1.c	(revision 127319)
+++ testsuite/gcc.dg/tree-ssa/inline_asm-1.c	(working copy)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O1 -fdump-tree-optimized -fdump-tree-alias1-vops" } */
+/* { dg-options "-O1 -fdump-tree-optimized -fdump-tree-salias-vops" } */
 /* Test to make sure that inline-asm causes a V_MAY_DEF and that we call test_function twice. */
 
 char test_function(void ) __attribute__((__pure__));
@@ -16,5 +16,5 @@ char f(char *a)
 /* { dg-final { cleanup-tree-dump "optimized" } } */
 
 /* There should a VDEF for the inline-asm.  */
-/* { dg-final { scan-tree-dump-times "VDEF" 1 "alias1"} } */
-/* { dg-final { cleanup-tree-dump "alias1" } } */
+/* { dg-final { scan-tree-dump-times "VDEF" 1 "salias"} } */
+/* { dg-final { cleanup-tree-dump "salias" } } */
Index: testsuite/gcc.dg/tree-ssa/inline_asm-2.c
===================================================================
--- testsuite/gcc.dg/tree-ssa/inline_asm-2.c	(revision 127319)
+++ testsuite/gcc.dg/tree-ssa/inline_asm-2.c	(working copy)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O1 -fdump-tree-alias1-vops" } */
+/* { dg-options "-O1 -fdump-tree-salias-vops" } */
 /* Test to make sure that inline-asm causes a V_MAY_DEF. */
 
 
@@ -14,5 +14,5 @@ void f(char *a)
 }
 
 /* There should a VDEF for the inline-asm and one for the link_error.  */
-/* { dg-final { scan-tree-dump-times "VDEF" 2 "alias1"} } */
-/* { dg-final { cleanup-tree-dump "alias1" } } */
+/* { dg-final { scan-tree-dump-times "VDEF" 2 "salias"} } */
+/* { dg-final { cleanup-tree-dump "salias" } } */
Index: testsuite/gcc.dg/tree-ssa/pta-fp.c
===================================================================
--- testsuite/gcc.dg/tree-ssa/pta-fp.c	(revision 127319)
+++ testsuite/gcc.dg/tree-ssa/pta-fp.c	(working copy)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */ 
-/* { dg-options "-O2 -fdump-tree-alias1" } */
+/* { dg-options "-O2 -fdump-tree-salias" } */
 extern double cos (double);
 extern double sin (double);
 double f(double a)
@@ -22,5 +22,5 @@ double f(double a)
 }
 /* The points-to set of the final function pointer should be "sin cos" */
 
-/* { dg-final { scan-tree-dump-times "{ sin cos }" 1 "alias1"} } */
-/* { dg-final { cleanup-tree-dump "alias1" } } */
+/* { dg-final { scan-tree-dump-times "{ sin cos }" 1 "salias"} } */
+/* { dg-final { cleanup-tree-dump "salias" } } */
Index: testsuite/gcc.dg/tree-ssa/20031015-1.c
===================================================================
--- testsuite/gcc.dg/tree-ssa/20031015-1.c	(revision 127319)
+++ testsuite/gcc.dg/tree-ssa/20031015-1.c	(working copy)
@@ -1,7 +1,7 @@
 /* With tree-ssa, gcc.dg/20000724-1.c failed because we missed
    a VOP of x in the asm statement.  */
 /* { dg-do compile } */
-/* { dg-options "-O1 -fdump-tree-alias1-vops" } */
+/* { dg-options "-O1 -fdump-tree-salias-vops" } */
 
 struct s { int a; };
 
@@ -14,5 +14,5 @@ main(void)
 }
 
 /* The VDEF comes from the initial assignment and the asm.  */
-/* { dg-final { scan-tree-dump-times "DEF" 2 "alias1" } } */
-/* { dg-final { cleanup-tree-dump "alias1" } } */
+/* { dg-final { scan-tree-dump-times "DEF" 2 "salias" } } */
+/* { dg-final { cleanup-tree-dump "salias" } } */
Index: testsuite/gcc.dg/tree-ssa/alias-12.c
===================================================================
--- testsuite/gcc.dg/tree-ssa/alias-12.c	(revision 127319)
+++ testsuite/gcc.dg/tree-ssa/alias-12.c	(working copy)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-alias1-vops" } */
+/* { dg-options "-O2 -fdump-tree-salias-vops" } */
 
 struct {
 	int i;
@@ -13,6 +13,6 @@ int foo(int i)
 	return a.x[i];
 }
 
-/* { dg-final { scan-tree-dump "VDEF" "alias1" } } */
-/* { dg-final { cleanup-tree-dump "alias1" } } */
+/* { dg-final { scan-tree-dump "VDEF" "salias" } } */
+/* { dg-final { cleanup-tree-dump "salias" } } */
 

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH]: Transform compute_may_aliases into a TODO
  2007-08-10 20:55 [PATCH]: Transform compute_may_aliases into a TODO Daniel Berlin
@ 2007-08-10 21:07 ` Andrew Pinski
  2007-08-10 21:18   ` Daniel Berlin
  2007-08-14 14:08 ` Diego Novillo
  1 sibling, 1 reply; 4+ messages in thread
From: Andrew Pinski @ 2007-08-10 21:07 UTC (permalink / raw)
  To: Daniel Berlin; +Cc: GCC Patches, Diego Novillo

On 8/10/07, Daniel Berlin <dberlin@dberlin.org> wrote:
> We often recompute aliases even when absolutely nothing has changed.
> This is quite wasteful.
> The attached changes compute_may_aliases into a TODO, and we now only
> run it when we've changed things that could destroy aliases.

You forgot to remove this comment which is no longer true:
       /* FIXME: May alias should a TODO but for 4.0.0,
 	 we add may_alias right after fold builtins
 	 which can create arbitrary GIMPLE.  */

Thanks,
Andrew Pinski

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH]: Transform compute_may_aliases into a TODO
  2007-08-10 21:07 ` Andrew Pinski
@ 2007-08-10 21:18   ` Daniel Berlin
  0 siblings, 0 replies; 4+ messages in thread
From: Daniel Berlin @ 2007-08-10 21:18 UTC (permalink / raw)
  To: Andrew Pinski; +Cc: GCC Patches, Diego Novillo

On 8/10/07, Andrew Pinski <pinskia@gmail.com> wrote:
> On 8/10/07, Daniel Berlin <dberlin@dberlin.org> wrote:
> > We often recompute aliases even when absolutely nothing has changed.
> > This is quite wasteful.
> > The attached changes compute_may_aliases into a TODO, and we now only
> > run it when we've changed things that could destroy aliases.
>
> You forgot to remove this comment which is no longer true:
>        /* FIXME: May alias should a TODO but for 4.0.0,
>          we add may_alias right after fold builtins
>          which can create arbitrary GIMPLE.  */

Fixed, thanks
>
> Thanks,
> Andrew Pinski
>

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH]: Transform compute_may_aliases into a TODO
  2007-08-10 20:55 [PATCH]: Transform compute_may_aliases into a TODO Daniel Berlin
  2007-08-10 21:07 ` Andrew Pinski
@ 2007-08-14 14:08 ` Diego Novillo
  1 sibling, 0 replies; 4+ messages in thread
From: Diego Novillo @ 2007-08-14 14:08 UTC (permalink / raw)
  To: Daniel Berlin; +Cc: GCC Patches

On 8/10/07 2:55 PM, Daniel Berlin wrote:

> 2007-08-10  Daniel Berlin  <dberlin@dberlin.org>
> 
> 	* tree-pass.h (PROP_pta): Removed.
> 	(TODO_rebuild_alias): New.
> 	(pass_may_alias): Removed.
> 	* tree-ssa-ccp.c (execute_fold_all_builtins): Only rebuild
> 	aliasing if we changed something.
> 	* tree-ssa-alias.c (compute_may_aliases): Make non-static.  Update
> 	SSA internally.
> 	(pass_may_alias): Removed.
> 	(create_structure_vars): Return TODO_rebuild_alias.
> 	* tree-ssa-pre.c (do_pre): Return TODO_rebuild_alias.
> 	* tree-sra.c (tree_sra): Only rebuild aliasing if something
> 	changed.
> 	(tree_sra_early): We never affect aliasing right now.
> 	* tree-flow.h (compute_may_aliases): New prototype.
> 	* passes.c: Remove pass_may_alias from the passes.
> 	(execute_function_todo): Support TODO_rebuild_alias.

Long overdue, thanks!  This is OK.


PS: My redhat.com address is no longer valid.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2007-08-14 14:08 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-08-10 20:55 [PATCH]: Transform compute_may_aliases into a TODO Daniel Berlin
2007-08-10 21:07 ` Andrew Pinski
2007-08-10 21:18   ` Daniel Berlin
2007-08-14 14:08 ` Diego Novillo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).