public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [tuples] add works_with_tuples_p flag to tree_opt_pass
@ 2007-07-27 14:28 Aldy Hernandez
  2007-07-27 16:42 ` Andrew Pinski
  0 siblings, 1 reply; 4+ messages in thread
From: Aldy Hernandez @ 2007-07-27 14:28 UTC (permalink / raw)
  To: dnovillo, amacleod, gcc-patches; +Cc: jh

This patch adds a new flag to tree_opt_pass so we can enable passes as
they get converted.  I have also disabled all passes.

I removed the check for DECL_SAVED_TREE in cgraph_analyze_functions as
discussed with Honza.

Finally, I have removed the exit on flag_gimple_only, as we can now get
through the entire compilation process, now that we've disabled the non
working passes (ahem, all of them).  I haven't removed the flag entirely,
as we may need it further on.

Committed to branch.

	* cgraph.c: Fix line wrap.
	* cgraph.h: Same.
	* tree-pass.h (struct tree_opt_pass): Add works_with_tuples_p
	field.
	* cgraphunit.c (cgraph_analyze_functions): Remove check for
	DECL_SAVED_TREE.
	(cgraph_expand_function): Comment out TREE_ASM_WRITTEN assertion.
	* tree-optimize.c (tree_lowering_passes): Comment out call to
	compact_blocks.
	* passes.c (execute_one_pass): Return if pass has not been
	converted to tuples.
	* tree-vrp.c, regrename.c, fwprop.c, tree-into-ssa.c,
	tree-complex.c, see.c, cgraphbuild.c, tracer.c, cgraph.c,
	postreload-gcse.c, postreload.c, tree-ssa-loop-ch.c,
	tree-tailcall.c, tree-pass.h, ipa-cp.c, final.c, omp-low.c,
	tree-ssa-dse.c, ipa-reference.c, tree-ssa-uncprop.c,
	auto-inc-dec.c, reorg.c, tree-ssa-copyrename.c, tree-ssa-ccp.c,
	df-core.c, mode-switching.c, tree-nomudflap.c, modulo-sched.c,
	ipa-pure-const.c, cse.c, web.c, tree-stdarg.c,
	tree-ssa-math-opts.c, tree-ssa-dom.c, tree-nrv.c,
	tree-ssa-alias.c, loop-init.c, gimple-low.c, tree-ssa-sink.c,
	ipa-inline.c, global.c, jump.c, ifcvt.c, predict.c,
	tree-ssa-loop.c, recog.c, dse.c, tree-ssa-ifcombine.c,
	matrix-reorg.c, c-decl.c, tree-eh.c, regmove.c, local-alloc.c,
	function.c, tree-vectorizer.c, gcse.c, ipa-type-escape.c,
	tree-if-conv.c, init-regs.c, ipa.c, tree-ssa-phiopt.c,
	rtl-factoring.c, lower-subreg.c, bt-load.c, tree-dfa.c except.c,
	emit-rtl.c, cfgexpand.c, tree-cfgcleanup.c, cfgcleanup.c,
	tree-ssa-pre.c, tree-sra.c, tree-mudflap.c, tree-ssa-copy.c,
	cfglayout.c, tree-ssa-forwprop.c, tree-ssa-dce.c, tree-ssa.c,
	regclass.c, integrate.c, tree-optimize.c, tree-object-size.c,
	combine.c, tree-outof-ssa.c, bb-reorder.c, stack-ptr-mod.c,
	var-tracking.c, tree-profile.c, tree-vect-generic.c, reg-stack.c,
	sched-rgn.c, tree-ssa-structalias.c, tree-cfg.c, passes.c,
	tree-ssa-reassoc.c, combine-stack-adj.c, cfgrtl.c, dce.c,
	tree-ssanames.c: Set works_with_tuples_p field to 0.

Index: tree-vrp.c
===================================================================
--- tree-vrp.c	(revision 126958)
+++ tree-vrp.c	(working copy)
@@ -6144,4 +6144,5 @@ struct tree_opt_pass pass_vrp =
     | TODO_dump_func
     | TODO_update_ssa,			/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: regrename.c
===================================================================
--- regrename.c	(revision 126958)
+++ regrename.c	(working copy)
@@ -1963,6 +1963,7 @@ struct tree_opt_pass pass_regrename =
   TODO_df_finish |
   TODO_dump_func,                       /* todo_flags_finish */
   'n'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 static bool
@@ -1995,5 +1996,6 @@ struct tree_opt_pass pass_cprop_hardreg 
   0,                                    /* todo_flags_start */
   TODO_dump_func,                       /* todo_flags_finish */
   'n'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
Index: fwprop.c
===================================================================
--- fwprop.c	(revision 126958)
+++ fwprop.c	(working copy)
@@ -1003,6 +1003,7 @@ struct tree_opt_pass pass_rtl_fwprop =
   TODO_df_finish |
   TODO_dump_func,                       /* todo_flags_finish */
   0                                     /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 static unsigned int
@@ -1045,4 +1046,5 @@ struct tree_opt_pass pass_rtl_fwprop_add
   TODO_df_finish |
   TODO_dump_func,                       /* todo_flags_finish */
   0                                     /* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: tree-into-ssa.c
===================================================================
--- tree-into-ssa.c	(revision 126958)
+++ tree-into-ssa.c	(working copy)
@@ -2315,6 +2315,7 @@ struct tree_opt_pass pass_build_ssa = 
     | TODO_verify_ssa
     | TODO_remove_unused_locals,	/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 
Index: tree-complex.c
===================================================================
--- tree-complex.c	(revision 126958)
+++ tree-complex.c	(working copy)
@@ -1540,6 +1540,7 @@ struct tree_opt_pass pass_lower_complex 
     | TODO_update_ssa
     | TODO_verify_stmts,		/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 \f
@@ -1586,4 +1587,5 @@ struct tree_opt_pass pass_lower_complex_
   TODO_dump_func | TODO_ggc_collect
     | TODO_verify_stmts,		/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: see.c
===================================================================
--- see.c	(revision 126958)
+++ see.c	(working copy)
@@ -3835,5 +3835,6 @@ struct tree_opt_pass pass_see =
   TODO_df_finish |
   TODO_dump_func,			/* todo_flags_finish */
   'u'					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
Index: cgraphbuild.c
===================================================================
--- cgraphbuild.c	(revision 126958)
+++ cgraphbuild.c	(working copy)
@@ -187,6 +187,7 @@ struct tree_opt_pass pass_build_cgraph_e
   0,					/* todo_flags_start */
   0,					/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 /* Record references to functions and other variables present in the
@@ -255,4 +256,5 @@ struct tree_opt_pass pass_rebuild_cgraph
   0,					/* todo_flags_start */
   0,					/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: tracer.c
===================================================================
--- tracer.c	(revision 126958)
+++ tracer.c	(working copy)
@@ -413,5 +413,6 @@ struct tree_opt_pass pass_tracer =
   0,                                    /* todo_flags_start */
   TODO_dump_func,                       /* todo_flags_finish */
   'T'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
Index: cgraph.c
===================================================================
--- cgraph.c	(revision 126958)
+++ cgraph.c	(working copy)
@@ -834,8 +834,8 @@ cgraph_clone_edge (struct cgraph_edge *e
    function's profile to reflect the fact that part of execution is handled
    by node.  */
 struct cgraph_node *
-cgraph_clone_node (struct cgraph_node *n, gcov_type count, int freq, int loop_nest,
-		   bool update_original)
+cgraph_clone_node (struct cgraph_node *n, gcov_type count, int freq,
+		   int loop_nest, bool update_original)
 {
   struct cgraph_node *new = cgraph_create_node ();
   struct cgraph_edge *e;
Index: cgraph.h
===================================================================
--- cgraph.h	(revision 126958)
+++ cgraph.h	(working copy)
@@ -89,7 +89,7 @@ struct cgraph_local_info GTY(())
 };
 
 /* Information about the function that needs to be computed globally
-   once compilation is finished.  Available only with -funit-at-time.  */
+   once compilation is finished.  Available only with -funit-at-a-time.  */
 
 struct cgraph_global_info GTY(())
 {
@@ -98,7 +98,8 @@ struct cgraph_global_info GTY(())
   /* Expected offset of the stack frame of inlined function.  */
   HOST_WIDE_INT stack_frame_offset;
 
-  /* For inline clones this points to the function they will be inlined into.  */
+  /* For inline clones this points to the function they will be
+     inlined into.  */
   struct cgraph_node *inlined_to;
 
   /* Estimated size of the function after inlining.  */
Index: postreload-gcse.c
===================================================================
--- postreload-gcse.c	(revision 126958)
+++ postreload-gcse.c	(working copy)
@@ -1325,5 +1325,6 @@ struct tree_opt_pass pass_gcse2 =
   TODO_dump_func |
   TODO_verify_flow | TODO_ggc_collect,  /* todo_flags_finish */
   'J'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
Index: postreload.c
===================================================================
--- postreload.c	(revision 126958)
+++ postreload.c	(working copy)
@@ -1602,5 +1602,6 @@ struct tree_opt_pass pass_postreload_cse
   TODO_df_finish |
   TODO_dump_func,                       /* todo_flags_finish */
   'o'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
Index: tree-ssa-loop-ch.c
===================================================================
--- tree-ssa-loop-ch.c	(revision 126958)
+++ tree-ssa-loop-ch.c	(working copy)
@@ -259,4 +259,5 @@ struct tree_opt_pass pass_ch = 
   TODO_cleanup_cfg | TODO_dump_func 
   | TODO_verify_ssa,			/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: tree-tailcall.c
===================================================================
--- tree-tailcall.c	(revision 126958)
+++ tree-tailcall.c	(working copy)
@@ -1032,6 +1032,7 @@ struct tree_opt_pass pass_tail_recursion
   0,					/* todo_flags_start */
   TODO_dump_func | TODO_verify_ssa,	/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 struct tree_opt_pass pass_tail_calls = 
@@ -1049,4 +1050,5 @@ struct tree_opt_pass pass_tail_calls = 
   0,					/* todo_flags_start */
   TODO_dump_func | TODO_verify_ssa,	/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: tree-pass.h
===================================================================
--- tree-pass.h	(revision 126958)
+++ tree-pass.h	(working copy)
@@ -130,6 +130,9 @@ struct tree_opt_pass
 
   /* Letter for RTL dumps.  */
   char letter;
+
+  /* Set if this pass has been converted to work with gimple tuples.  */
+  int works_with_tuples_p : 1;
 };
 
 /* Define a tree dump switch.  */
Index: ipa-cp.c
===================================================================
--- ipa-cp.c	(revision 126958)
+++ ipa-cp.c	(working copy)
@@ -1151,4 +1151,5 @@ struct tree_opt_pass pass_ipa_cp = {
   0,				/* todo_flags_start */
   TODO_dump_cgraph | TODO_dump_func,	/* todo_flags_finish */
   0				/* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: final.c
===================================================================
--- final.c	(revision 126958)
+++ final.c	(working copy)
@@ -763,6 +763,7 @@ struct tree_opt_pass pass_compute_alignm
   0,                                    /* todo_flags_start */
   0,                                    /* todo_flags_finish */
   0                                     /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 \f
@@ -4036,6 +4037,7 @@ struct tree_opt_pass pass_final =
   0,                                    /* todo_flags_start */
   TODO_ggc_collect,                     /* todo_flags_finish */
   0                                     /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 
@@ -4062,6 +4064,7 @@ struct tree_opt_pass pass_shorten_branch
   0,                                    /* todo_flags_start */
   TODO_dump_func,                       /* todo_flags_finish */
   0                                     /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 
@@ -4144,5 +4147,6 @@ struct tree_opt_pass pass_clean_state =
   0,                                    /* todo_flags_start */
   0,                                    /* todo_flags_finish */
   0                                     /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
Index: omp-low.c
===================================================================
--- omp-low.c	(revision 126958)
+++ omp-low.c	(working copy)
@@ -3534,6 +3534,7 @@ struct tree_opt_pass pass_expand_omp = 
   0,					/* todo_flags_start */
   TODO_dump_func,			/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 \f
 /* Routines to lower OpenMP directives into OMP-GIMPLE.  */
@@ -4404,6 +4405,7 @@ struct tree_opt_pass pass_lower_omp = 
   0,					/* todo_flags_start */
   TODO_dump_func,			/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 \f
 /* The following is a utility to diagnose OpenMP structured block violations.
Index: tree-ssa-dse.c
===================================================================
--- tree-ssa-dse.c	(revision 126958)
+++ tree-ssa-dse.c	(working copy)
@@ -918,4 +918,5 @@ struct tree_opt_pass pass_dse = {
     | TODO_ggc_collect
     | TODO_verify_ssa,		/* todo_flags_finish */
   0				/* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: ipa-reference.c
===================================================================
--- ipa-reference.c	(revision 126958)
+++ ipa-reference.c	(working copy)
@@ -1342,6 +1342,7 @@ struct tree_opt_pass pass_ipa_reference 
   0,					/* todo_flags_start */
   0,                                    /* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 #include "gt-ipa-reference.h"
Index: tree-ssa-uncprop.c
===================================================================
--- tree-ssa-uncprop.c	(revision 126958)
+++ tree-ssa-uncprop.c	(working copy)
@@ -622,4 +622,5 @@ struct tree_opt_pass pass_uncprop = 
   0,					/* todo_flags_start */
   TODO_dump_func | TODO_verify_ssa,	/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: auto-inc-dec.c
===================================================================
--- auto-inc-dec.c	(revision 126958)
+++ auto-inc-dec.c	(working copy)
@@ -1554,5 +1554,6 @@ struct tree_opt_pass pass_inc_dec =
   TODO_dump_func | 
   TODO_df_finish,                       /* todo_flags_finish */
   0                                     /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
Index: reorg.c
===================================================================
--- reorg.c	(revision 126958)
+++ reorg.c	(working copy)
@@ -4054,6 +4054,7 @@ struct tree_opt_pass pass_delay_slots =
   TODO_dump_func |
   TODO_ggc_collect,                     /* todo_flags_finish */
   'd'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 /* Machine dependent reorg pass.  */
@@ -4087,4 +4088,5 @@ struct tree_opt_pass pass_machine_reorg 
   TODO_dump_func |
   TODO_ggc_collect,                     /* todo_flags_finish */
   'M'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: cgraphunit.c
===================================================================
--- cgraphunit.c	(revision 126958)
+++ cgraphunit.c	(working copy)
@@ -892,23 +892,12 @@ cgraph_analyze_functions (void)
   while (cgraph_nodes_queue)
     {
       struct cgraph_edge *edge;
-      tree decl = cgraph_nodes_queue->decl;
 
       node = cgraph_nodes_queue;
       cgraph_nodes_queue = cgraph_nodes_queue->next_needed;
       node->next_needed = NULL;
 
-      /* ??? It is possible to create extern inline function and later using
-	 weak alias attribute to kill its body. See
-	 gcc.c-torture/compile/20011119-1.c  */
-      if (!DECL_SAVED_TREE (decl))
-	{
-	  cgraph_reset_node (node);
-	  continue;
-	}
-
       gcc_assert (!node->analyzed && node->reachable);
-      gcc_assert (DECL_SAVED_TREE (decl));
 
       cgraph_analyze_function (node);
 
@@ -1072,9 +1061,12 @@ cgraph_expand_function (struct cgraph_no
   /* Generate RTL for the body of DECL.  */
   lang_hooks.callgraph.expand_function (decl);
 
+  /* FIXME tuples */
+#if 0
   /* Make sure that BE didn't give up on compiling.  */
   /* ??? Can happen with nested function of extern inline.  */
   gcc_assert (TREE_ASM_WRITTEN (node->decl));
+#endif
 
   if (DECL_IGNORED_P (decl))
     {
Index: tree-ssa-copyrename.c
===================================================================
--- tree-ssa-copyrename.c	(revision 126958)
+++ tree-ssa-copyrename.c	(working copy)
@@ -402,5 +402,6 @@ struct tree_opt_pass pass_rename_ssa_cop
   0,					/* todo_flags_start */ 
   TODO_dump_func | TODO_verify_ssa,     /* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 }; 
 
Index: tree-ssa-ccp.c
===================================================================
--- tree-ssa-ccp.c	(revision 126958)
+++ tree-ssa-ccp.c	(working copy)
@@ -1446,6 +1446,7 @@ struct tree_opt_pass pass_ccp = 
   TODO_dump_func | TODO_verify_ssa
   | TODO_verify_stmts | TODO_ggc_collect,/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 
@@ -1482,6 +1483,7 @@ struct tree_opt_pass pass_store_ccp = 
   TODO_dump_func | TODO_verify_ssa
   | TODO_verify_stmts | TODO_ggc_collect,/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 /* Given a constant value VAL for bitfield FIELD, and a destination
@@ -2751,4 +2753,5 @@ struct tree_opt_pass pass_fold_builtins 
     | TODO_verify_ssa
     | TODO_update_ssa,			/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: df-core.c
===================================================================
--- df-core.c	(revision 126958)
+++ df-core.c	(working copy)
@@ -764,6 +764,7 @@ struct tree_opt_pass pass_df_initialize_
   0,                                    /* todo_flags_start */
   0,                                    /* todo_flags_finish */
   'z'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 
@@ -789,6 +790,7 @@ struct tree_opt_pass pass_df_initialize_
   0,                                    /* todo_flags_start */
   0,                                    /* todo_flags_finish */
   'z'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 
@@ -836,6 +838,7 @@ struct tree_opt_pass pass_df_finish =
   0,                                    /* todo_flags_start */
   0,                                    /* todo_flags_finish */
   'z'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 
Index: mode-switching.c
===================================================================
--- mode-switching.c	(revision 126958)
+++ mode-switching.c	(working copy)
@@ -762,4 +762,5 @@ struct tree_opt_pass pass_mode_switching
   TODO_df_finish |
   TODO_dump_func,                       /* todo_flags_finish */
   0                                     /* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: tree-nomudflap.c
===================================================================
--- tree-nomudflap.c	(revision 126958)
+++ tree-nomudflap.c	(working copy)
@@ -100,6 +100,7 @@ struct tree_opt_pass pass_mudflap_1 = 
   0,					/* todo_flags_start */
   0,                                    /* todo_flags_finish */
   0				        /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 struct tree_opt_pass pass_mudflap_2 = 
@@ -117,6 +118,7 @@ struct tree_opt_pass pass_mudflap_2 = 
   0,					/* todo_flags_start */
   0,                                    /* todo_flags_finish */
   0				        /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 /* Instead of:
Index: modulo-sched.c
===================================================================
--- modulo-sched.c	(revision 126958)
+++ modulo-sched.c	(working copy)
@@ -2506,5 +2506,6 @@ struct tree_opt_pass pass_sms =
   TODO_dump_func |
   TODO_ggc_collect,                     /* todo_flags_finish */
   'm'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
Index: ipa-pure-const.c
===================================================================
--- ipa-pure-const.c	(revision 126958)
+++ ipa-pure-const.c	(working copy)
@@ -752,6 +752,7 @@ struct tree_opt_pass pass_ipa_pure_const
   0,					/* todo_flags_start */
   0,                                    /* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 
Index: cse.c
===================================================================
--- cse.c	(revision 126958)
+++ cse.c	(working copy)
@@ -7018,6 +7018,7 @@ struct tree_opt_pass pass_cse =
   TODO_ggc_collect |
   TODO_verify_flow,                     /* todo_flags_finish */
   's'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 
@@ -7076,5 +7077,6 @@ struct tree_opt_pass pass_cse2 =
   TODO_ggc_collect |
   TODO_verify_flow,                     /* todo_flags_finish */
   't'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
Index: web.c
===================================================================
--- web.c	(revision 126958)
+++ web.c	(working copy)
@@ -388,5 +388,6 @@ struct tree_opt_pass pass_web =
   TODO_df_finish | 
   TODO_dump_func,                       /* todo_flags_finish */
   'Z'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
Index: tree-stdarg.c
===================================================================
--- tree-stdarg.c	(revision 126958)
+++ tree-stdarg.c	(working copy)
@@ -925,4 +925,5 @@ struct tree_opt_pass pass_stdarg =
   0,					/* todo_flags_start */
   TODO_dump_func,			/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: tree-ssa-math-opts.c
===================================================================
--- tree-ssa-math-opts.c	(revision 126958)
+++ tree-ssa-math-opts.c	(working copy)
@@ -568,6 +568,7 @@ struct tree_opt_pass pass_cse_reciprocal
   TODO_dump_func | TODO_update_ssa | TODO_verify_ssa
     | TODO_verify_stmts,                /* todo_flags_finish */
   0				        /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 /* Records an occurrence at statement USE_STMT in the vector of trees
@@ -773,6 +774,7 @@ struct tree_opt_pass pass_cse_sincos =
   TODO_dump_func | TODO_update_ssa | TODO_verify_ssa
     | TODO_verify_stmts,                /* todo_flags_finish */
   0				        /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 /* Find all expressions in the form of sqrt(a/b) and
@@ -865,4 +867,5 @@ struct tree_opt_pass pass_convert_to_rsq
   TODO_dump_func | TODO_update_ssa | TODO_verify_ssa
     | TODO_verify_stmts,                /* todo_flags_finish */
   0				        /* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: tree-ssa-dom.c
===================================================================
--- tree-ssa-dom.c	(revision 126958)
+++ tree-ssa-dom.c	(working copy)
@@ -386,6 +386,7 @@ struct tree_opt_pass pass_dominator = 
     | TODO_cleanup_cfg
     | TODO_verify_ssa,			/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 
@@ -2554,4 +2555,5 @@ struct tree_opt_pass pass_phi_only_cprop
     | TODO_verify_stmts
     | TODO_update_ssa,			/* todo_flags_finish */
   0                                     /* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: tree-nrv.c
===================================================================
--- tree-nrv.c	(revision 126958)
+++ tree-nrv.c	(working copy)
@@ -237,6 +237,7 @@ struct tree_opt_pass pass_nrv = 
   0,					/* todo_flags_start */
   TODO_dump_func | TODO_ggc_collect,			/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 /* Determine (pessimistically) whether DEST is available for NRV
@@ -323,4 +324,5 @@ struct tree_opt_pass pass_return_slot = 
   0,					/* todo_flags_start */
   0,					/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: tree-ssa-alias.c
===================================================================
--- tree-ssa-alias.c	(revision 126958)
+++ tree-ssa-alias.c	(working copy)
@@ -1752,6 +1752,7 @@ struct tree_opt_pass pass_may_alias = 
     | TODO_verify_ssa
     | TODO_verify_stmts, 		/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 
@@ -4060,6 +4061,7 @@ struct tree_opt_pass pass_create_structu
   0,			 /* todo_flags_start */
   TODO_dump_func,	 /* todo_flags_finish */
   0			 /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 /* Reset the call_clobbered flags on our referenced vars.  In
@@ -4091,4 +4093,5 @@ struct tree_opt_pass pass_reset_cc_flags
   0,			 /* todo_flags_start */
   0,         	         /* todo_flags_finish */
   0			 /* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: loop-init.c
===================================================================
--- loop-init.c	(revision 126958)
+++ loop-init.c	(working copy)
@@ -157,6 +157,7 @@ struct tree_opt_pass pass_loop2 =
   TODO_dump_func |
   TODO_ggc_collect,                     /* todo_flags_finish */
   'L'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 \f
@@ -188,6 +189,7 @@ struct tree_opt_pass pass_rtl_loop_init 
   0,                                    /* todo_flags_start */
   TODO_dump_func,                       /* todo_flags_finish */
   'L'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 \f
@@ -221,6 +223,7 @@ struct tree_opt_pass pass_rtl_loop_done 
   0,                                    /* todo_flags_start */
   TODO_dump_func,                       /* todo_flags_finish */
   'L'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 \f
@@ -255,6 +258,7 @@ struct tree_opt_pass pass_rtl_move_loop_
   TODO_df_finish |                      /* This is shutting down the instance in loop_invariant.c  */
   TODO_dump_func,                       /* todo_flags_finish */
   'L'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 \f
@@ -288,6 +292,7 @@ struct tree_opt_pass pass_rtl_unswitch =
   0,                                    /* todo_flags_start */
   TODO_dump_func,                       /* todo_flags_finish */
   'L'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 \f
@@ -334,6 +339,7 @@ struct tree_opt_pass pass_rtl_unroll_and
   0,                                    /* todo_flags_start */
   TODO_dump_func,                       /* todo_flags_finish */
   'L'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 \f
@@ -373,5 +379,6 @@ struct tree_opt_pass pass_rtl_doloop =
   0,                                    /* todo_flags_start */
   TODO_dump_func,                       /* todo_flags_finish */
   'L'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
Index: gimple-low.c
===================================================================
--- gimple-low.c	(revision 126958)
+++ gimple-low.c	(working copy)
@@ -168,6 +168,7 @@ struct tree_opt_pass pass_lower_cf = 
   0,					/* todo_flags_start */
   TODO_dump_func,			/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 
@@ -806,4 +807,5 @@ struct tree_opt_pass pass_mark_used_bloc
   0,					/* todo_flags_start */
   TODO_dump_func,			/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: tree-ssa-sink.c
===================================================================
--- tree-ssa-sink.c	(revision 126958)
+++ tree-ssa-sink.c	(working copy)
@@ -573,4 +573,5 @@ struct tree_opt_pass pass_sink_code =
     | TODO_ggc_collect
     | TODO_verify_ssa,			/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: ipa-inline.c
===================================================================
--- ipa-inline.c	(revision 126958)
+++ ipa-inline.c	(working copy)
@@ -1433,6 +1433,7 @@ struct tree_opt_pass pass_ipa_inline = 
   TODO_dump_cgraph | TODO_dump_func
   | TODO_remove_functions,		/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 /* Because inlining might remove no-longer reachable nodes, we need to
@@ -1485,6 +1486,7 @@ struct tree_opt_pass pass_early_inline =
   0,					/* todo_flags_start */
   TODO_dump_func,    			/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 /* When inlining shall be performed.  */
@@ -1513,6 +1515,7 @@ struct tree_opt_pass pass_ipa_early_inli
   0,					/* todo_flags_start */
   TODO_dump_cgraph, 		        /* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 /* Compute parameters of functions used by inliner.  */
@@ -1560,6 +1563,7 @@ struct tree_opt_pass pass_inline_paramet
   0,					/* todo_flags_start */
   0,					/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 /* Apply inline plan to the function.  */
@@ -1616,6 +1620,7 @@ struct tree_opt_pass pass_apply_inline =
   TODO_dump_func | TODO_verify_flow
   | TODO_verify_stmts,			/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 #include "gt-ipa-inline.h"
Index: global.c
===================================================================
--- global.c	(revision 126958)
+++ global.c	(working copy)
@@ -2112,5 +2112,6 @@ struct tree_opt_pass pass_global_alloc =
   TODO_dump_func |
   TODO_ggc_collect,                     /* todo_flags_finish */
   'g'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
Index: jump.c
===================================================================
--- jump.c	(revision 126958)
+++ jump.c	(working copy)
@@ -136,6 +136,7 @@ struct tree_opt_pass pass_cleanup_barrie
   0,                                    /* todo_flags_start */
   TODO_dump_func,                       /* todo_flags_finish */
   0                                     /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 \f
Index: ifcvt.c
===================================================================
--- ifcvt.c	(revision 126958)
+++ ifcvt.c	(working copy)
@@ -4087,6 +4087,7 @@ struct tree_opt_pass pass_rtl_ifcvt =
   TODO_df_finish |
   TODO_dump_func,                       /* todo_flags_finish */
   'C'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 static bool
@@ -4122,6 +4123,7 @@ struct tree_opt_pass pass_if_after_combi
   TODO_dump_func |
   TODO_ggc_collect,                     /* todo_flags_finish */
   'C'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 
@@ -4156,4 +4158,5 @@ struct tree_opt_pass pass_if_after_reloa
   TODO_dump_func |
   TODO_ggc_collect,                     /* todo_flags_finish */
   'E'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: predict.c
===================================================================
--- predict.c	(revision 126958)
+++ predict.c	(working copy)
@@ -1953,4 +1953,5 @@ struct tree_opt_pass pass_profile = 
   0,					/* todo_flags_start */
   TODO_ggc_collect | TODO_verify_ssa,			/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: tree-ssa-loop.c
===================================================================
--- tree-ssa-loop.c	(revision 126958)
+++ tree-ssa-loop.c	(working copy)
@@ -71,6 +71,7 @@ struct tree_opt_pass pass_tree_loop = 
   TODO_ggc_collect,			/* todo_flags_start */
   TODO_dump_func | TODO_verify_ssa | TODO_ggc_collect,	/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 /* Loop optimizer initialization.  */
@@ -101,6 +102,7 @@ struct tree_opt_pass pass_tree_loop_init
   0,					/* todo_flags_start */
   TODO_dump_func | TODO_verify_loops,	/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 /* Loop invariant motion pass.  */
@@ -136,6 +138,7 @@ struct tree_opt_pass pass_lim = 
   0,					/* todo_flags_start */
   TODO_dump_func | TODO_verify_loops,	/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 /* Loop unswitching pass.  */
@@ -171,6 +174,7 @@ struct tree_opt_pass pass_tree_unswitch 
   TODO_ggc_collect | TODO_dump_func
     | TODO_verify_loops,		/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 /* Predictive commoning.  */
@@ -207,6 +211,7 @@ struct tree_opt_pass pass_predcom = 
   TODO_dump_func | TODO_verify_loops
     | TODO_update_ssa_only_virtuals,	/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 /* Loop autovectorization.  */
@@ -239,6 +244,7 @@ struct tree_opt_pass pass_vectorize =
   TODO_dump_func | TODO_update_ssa
     | TODO_ggc_collect,			/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 /* Loop nest optimizations.  */
@@ -275,6 +281,7 @@ struct tree_opt_pass pass_linear_transfo
   TODO_dump_func | TODO_verify_loops
     | TODO_ggc_collect,			/* todo_flags_finish */
   0				        /* letter */	
+  ,0					/* works_with_tuples_p */
 };
 
 /* Check the correctness of the data dependence analyzers.  */
@@ -310,6 +317,7 @@ struct tree_opt_pass pass_check_data_dep
   0,					/* todo_flags_start */
   TODO_dump_func,                	/* todo_flags_finish */
   0				        /* letter */	
+  ,0					/* works_with_tuples_p */
 };
 
 /* Canonical induction variable creation pass.  */
@@ -344,6 +352,7 @@ struct tree_opt_pass pass_iv_canon =
   0,					/* todo_flags_start */
   TODO_dump_func | TODO_verify_loops,	/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 /* Propagation of constants using scev.  */
@@ -371,6 +380,7 @@ struct tree_opt_pass pass_scev_cprop =
     | TODO_update_ssa_only_virtuals,
 					/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 /* Remove empty loops.  */
@@ -400,6 +410,7 @@ struct tree_opt_pass pass_empty_loop =
   TODO_dump_func | TODO_verify_loops 
     | TODO_ggc_collect,			/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 /* Record bounds on numbers of iterations of loops.  */
@@ -430,6 +441,7 @@ struct tree_opt_pass pass_record_bounds 
   0,					/* todo_flags_start */
   0,			              	/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 /* Complete unrolling of loops.  */
@@ -467,6 +479,7 @@ struct tree_opt_pass pass_complete_unrol
   TODO_dump_func | TODO_verify_loops
     | TODO_ggc_collect,			/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 /* Prefetching.  */
@@ -501,6 +514,7 @@ struct tree_opt_pass pass_loop_prefetch 
   0,					/* todo_flags_start */
   TODO_dump_func | TODO_verify_loops,	/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 /* Induction variable optimizations.  */
@@ -537,6 +551,7 @@ struct tree_opt_pass pass_iv_optimize =
   TODO_dump_func | TODO_verify_loops
   | TODO_update_ssa | TODO_ggc_collect,	/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 /* Loop optimizer finalization.  */
@@ -565,4 +580,5 @@ struct tree_opt_pass pass_tree_loop_done
   0,					/* todo_flags_start */
   TODO_cleanup_cfg | TODO_dump_func,	/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: recog.c
===================================================================
--- recog.c	(revision 126958)
+++ recog.c	(working copy)
@@ -3336,6 +3336,7 @@ struct tree_opt_pass pass_peephole2 =
   TODO_df_finish |
   TODO_dump_func,                       /* todo_flags_finish */
   'z'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 static unsigned int
@@ -3360,6 +3361,7 @@ struct tree_opt_pass pass_split_all_insn
   0,                                    /* todo_flags_start */
   TODO_dump_func,                       /* todo_flags_finish */
   0                                     /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 static unsigned int
@@ -3388,6 +3390,7 @@ struct tree_opt_pass pass_split_after_re
   0,                                    /* todo_flags_start */
   TODO_dump_func,                       /* todo_flags_finish */
   0                                     /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 static bool
@@ -3430,6 +3433,7 @@ struct tree_opt_pass pass_split_before_r
   0,                                    /* todo_flags_start */
   TODO_dump_func,                       /* todo_flags_finish */
   0                                     /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 static bool
@@ -3467,6 +3471,7 @@ struct tree_opt_pass pass_split_before_s
   TODO_verify_flow |
   TODO_dump_func,                       /* todo_flags_finish */
   0                                     /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 /* The placement of the splitting that we do for shorten_branches
@@ -3496,6 +3501,7 @@ struct tree_opt_pass pass_split_for_shor
   0,                                    /* todo_flags_start */
   TODO_dump_func,                       /* todo_flags_finish */
   0                                     /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 
Index: dse.c
===================================================================
--- dse.c	(revision 126958)
+++ dse.c	(working copy)
@@ -3085,6 +3085,7 @@ struct tree_opt_pass pass_rtl_dse1 =
   TODO_df_finish |
   TODO_ggc_collect,                     /* todo_flags_finish */
   'w'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 struct tree_opt_pass pass_rtl_dse2 =
@@ -3104,5 +3105,6 @@ struct tree_opt_pass pass_rtl_dse2 =
   TODO_df_finish |
   TODO_ggc_collect,                     /* todo_flags_finish */
   'w'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
Index: tree-ssa-ifcombine.c
===================================================================
--- tree-ssa-ifcombine.c	(revision 126958)
+++ tree-ssa-ifcombine.c	(working copy)
@@ -620,4 +620,5 @@ struct tree_opt_pass pass_tree_ifcombine
   | TODO_update_ssa
   | TODO_verify_ssa,		/* todo_flags_finish */
   0				/* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: matrix-reorg.c
===================================================================
--- matrix-reorg.c	(revision 126958)
+++ matrix-reorg.c	(working copy)
@@ -2328,4 +2328,5 @@ struct tree_opt_pass pass_ipa_matrix_reo
   0,				/* todo_flags_start */
   TODO_dump_cgraph | TODO_dump_func,	/* todo_flags_finish */
   0				/* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: c-decl.c
===================================================================
--- c-decl.c	(revision 126958)
+++ c-decl.c	(working copy)
@@ -6669,9 +6669,6 @@ c_gimple_diagnostics_recursively (tree f
   /* Handle attribute((warn_unused_result)).  Relies on gimple input.  */
   c_warn_unused_result (body);
 
-  if (flag_gimple_only)
-    exit (0);
-
   /* Notice when OpenMP structured block constraints are violated.  */
   if (flag_openmp)
     diagnose_omp_structured_block_errors (fndecl);
Index: tree-eh.c
===================================================================
--- tree-eh.c	(revision 126958)
+++ tree-eh.c	(working copy)
@@ -1702,6 +1702,7 @@ struct tree_opt_pass pass_lower_eh =
   0,					/* todo_flags_start */
   TODO_dump_func,			/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 \f
Index: regmove.c
===================================================================
--- regmove.c	(revision 126958)
+++ regmove.c	(working copy)
@@ -2126,5 +2126,6 @@ struct tree_opt_pass pass_regmove =
   TODO_dump_func |
   TODO_ggc_collect,                     /* todo_flags_finish */
   'N'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
Index: local-alloc.c
===================================================================
--- local-alloc.c	(revision 126958)
+++ local-alloc.c	(working copy)
@@ -2587,5 +2587,6 @@ struct tree_opt_pass pass_local_alloc =
   TODO_dump_func |
   TODO_ggc_collect,                     /* todo_flags_finish */
   'l'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
Index: function.c
===================================================================
--- function.c	(revision 126958)
+++ function.c	(working copy)
@@ -1734,6 +1734,7 @@ struct tree_opt_pass pass_instantiate_vi
   0,                                    /* todo_flags_start */
   TODO_dump_func,                       /* todo_flags_finish */
   0                                     /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 \f
@@ -3930,6 +3931,7 @@ struct tree_opt_pass pass_init_function 
   0,                                    /* todo_flags_start */
   0,                                    /* todo_flags_finish */
   0                                     /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 
@@ -5487,6 +5489,7 @@ struct tree_opt_pass pass_leaf_regs =
   0,                                    /* todo_flags_start */
   0,                                    /* todo_flags_finish */
   0                                     /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 static unsigned int
@@ -5520,6 +5523,7 @@ struct tree_opt_pass pass_thread_prologu
   TODO_df_finish |
   TODO_ggc_collect,                     /* todo_flags_finish */
   'w'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 \f
 
@@ -5657,6 +5661,7 @@ struct tree_opt_pass pass_match_asm_cons
   0,					/* todo_flags_start */
   TODO_dump_func,                       /* todo_flags_finish */
   0                                     /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 
Index: tree-vectorizer.c
===================================================================
--- tree-vectorizer.c	(revision 126958)
+++ tree-vectorizer.c	(working copy)
@@ -2398,4 +2398,5 @@ struct tree_opt_pass pass_ipa_increase_a
   0,					/* todo_flags_start */
   0, 					/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: gcse.c
===================================================================
--- gcse.c	(revision 126958)
+++ gcse.c	(working copy)
@@ -6679,6 +6679,7 @@ struct tree_opt_pass pass_jump_bypass =
   TODO_dump_func |
   TODO_ggc_collect | TODO_verify_flow,  /* todo_flags_finish */
   'G'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 
@@ -6746,6 +6747,7 @@ struct tree_opt_pass pass_gcse =
   TODO_dump_func |
   TODO_verify_flow | TODO_ggc_collect,  /* todo_flags_finish */
   'G'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 
Index: ipa-type-escape.c
===================================================================
--- ipa-type-escape.c	(revision 126958)
+++ ipa-type-escape.c	(working copy)
@@ -2173,5 +2173,6 @@ struct tree_opt_pass pass_ipa_type_escap
   0,					/* todo_flags_start */
   0,                                    /* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
Index: tree-if-conv.c
===================================================================
--- tree-if-conv.c	(revision 126958)
+++ tree-if-conv.c	(working copy)
@@ -1161,4 +1161,5 @@ struct tree_opt_pass pass_if_conversion 
   TODO_dump_func | TODO_verify_loops | TODO_verify_stmts | TODO_verify_flow,	
                                         /* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: init-regs.c
===================================================================
--- init-regs.c	(revision 126958)
+++ init-regs.c	(working copy)
@@ -152,4 +152,5 @@ struct tree_opt_pass pass_initialize_reg
   TODO_dump_func |
   TODO_df_finish,                       /* todo_flags_finish */
   0                                     /* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: ipa.c
===================================================================
--- ipa.c	(revision 126958)
+++ ipa.c	(working copy)
@@ -293,4 +293,5 @@ struct tree_opt_pass pass_ipa_function_a
   0,					/* todo_flags_start */
   TODO_remove_functions | TODO_dump_cgraph,/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: tree-ssa-phiopt.c
===================================================================
--- tree-ssa-phiopt.c	(revision 126958)
+++ tree-ssa-phiopt.c	(working copy)
@@ -1018,4 +1018,5 @@ struct tree_opt_pass pass_phiopt =
     | TODO_verify_flow
     | TODO_verify_stmts,		/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: rtl-factoring.c
===================================================================
--- rtl-factoring.c	(revision 126958)
+++ rtl-factoring.c	(working copy)
@@ -1431,4 +1431,5 @@ struct tree_opt_pass pass_rtl_seqabstr =
   TODO_dump_func |
   TODO_ggc_collect,                     /* todo_flags_finish */
   'Q'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: lower-subreg.c
===================================================================
--- lower-subreg.c	(revision 126958)
+++ lower-subreg.c	(working copy)
@@ -1274,6 +1274,7 @@ struct tree_opt_pass pass_lower_subreg =
   TODO_ggc_collect |
   TODO_verify_flow,                     /* todo_flags_finish */
   'u'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 struct tree_opt_pass pass_lower_subreg2 =
@@ -1294,4 +1295,5 @@ struct tree_opt_pass pass_lower_subreg2 
   TODO_ggc_collect |
   TODO_verify_flow,                     /* todo_flags_finish */
   'U'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: bt-load.c
===================================================================
--- bt-load.c	(revision 126958)
+++ bt-load.c	(working copy)
@@ -1522,6 +1522,7 @@ struct tree_opt_pass pass_branch_target_
   TODO_dump_func |
   TODO_ggc_collect,                     /* todo_flags_finish */
   'd'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 static bool
@@ -1569,5 +1570,6 @@ struct tree_opt_pass pass_branch_target_
   TODO_dump_func |
   TODO_ggc_collect,                     /* todo_flags_finish */
   'd'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
Index: tree-dfa.c
===================================================================
--- tree-dfa.c	(revision 126958)
+++ tree-dfa.c	(working copy)
@@ -112,6 +112,7 @@ struct tree_opt_pass pass_referenced_var
   0,					/* todo_flags_start */
   0,                                    /* todo_flags_finish */
   0				        /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 
Index: except.c
===================================================================
--- except.c	(revision 126958)
+++ except.c	(working copy)
@@ -2850,6 +2850,7 @@ struct tree_opt_pass pass_set_nothrow_fu
   0,                                    /* todo_flags_start */
   0,                                    /* todo_flags_finish */
   0                                     /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 \f
@@ -3379,6 +3380,7 @@ struct tree_opt_pass pass_convert_to_eh_
   0,                                    /* todo_flags_start */
   TODO_dump_func,			/* todo_flags_finish */
   0                                     /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 \f
@@ -4002,6 +4004,7 @@ struct tree_opt_pass pass_rtl_eh =
   0,                                    /* todo_flags_start */
   TODO_dump_func,                       /* todo_flags_finish */
   'h'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 #include "gt-except.h"
Index: emit-rtl.c
===================================================================
--- emit-rtl.c	(revision 126958)
+++ emit-rtl.c	(working copy)
@@ -2194,6 +2194,7 @@ struct tree_opt_pass pass_unshare_all_rt
   0,                                    /* todo_flags_start */
   TODO_dump_func,                       /* todo_flags_finish */
   0                                     /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 
Index: cfgexpand.c
===================================================================
--- cfgexpand.c	(revision 126958)
+++ cfgexpand.c	(working copy)
@@ -2007,4 +2007,5 @@ struct tree_opt_pass pass_expand =
   0,                                    /* todo_flags_start */
   TODO_dump_func,                       /* todo_flags_finish */
   'r'					/* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: tree-cfgcleanup.c
===================================================================
--- tree-cfgcleanup.c	(revision 126958)
+++ tree-cfgcleanup.c	(working copy)
@@ -897,4 +897,5 @@ struct tree_opt_pass pass_merge_phi = {
   TODO_dump_func | TODO_ggc_collect	/* todo_flags_finish */
   | TODO_verify_ssa,
   0				/* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: cfgcleanup.c
===================================================================
--- cfgcleanup.c	(revision 126958)
+++ cfgcleanup.c	(working copy)
@@ -2285,6 +2285,7 @@ struct tree_opt_pass pass_jump =
   TODO_dump_func |
   TODO_verify_flow,                     /* todo_flags_finish */
   'i'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 
@@ -2315,6 +2316,7 @@ struct tree_opt_pass pass_jump2 =
   TODO_ggc_collect,                     /* todo_flags_start */
   TODO_dump_func,                       /* todo_flags_finish */
   'j'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 
Index: tree-ssa-pre.c
===================================================================
--- tree-ssa-pre.c	(revision 126958)
+++ tree-ssa-pre.c	(working copy)
@@ -4006,6 +4006,7 @@ struct tree_opt_pass pass_pre =
   TODO_update_ssa_only_virtuals | TODO_dump_func | TODO_ggc_collect
   | TODO_verify_ssa, /* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 
@@ -4039,4 +4040,5 @@ struct tree_opt_pass pass_fre =
   0,					/* todo_flags_start */
   TODO_dump_func | TODO_ggc_collect | TODO_verify_ssa, /* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: tree-sra.c
===================================================================
--- tree-sra.c	(revision 126958)
+++ tree-sra.c	(working copy)
@@ -2449,6 +2449,7 @@ struct tree_opt_pass pass_sra_early =
   | TODO_ggc_collect
   | TODO_verify_ssa,			/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 struct tree_opt_pass pass_sra =
@@ -2469,4 +2470,5 @@ struct tree_opt_pass pass_sra =
   | TODO_ggc_collect
   | TODO_verify_ssa,			/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: tree-mudflap.c
===================================================================
--- tree-mudflap.c	(revision 126958)
+++ tree-mudflap.c	(working copy)
@@ -1319,6 +1319,7 @@ struct tree_opt_pass pass_mudflap_1 = 
   0,                                    /* todo_flags_start */
   TODO_dump_func,                       /* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 struct tree_opt_pass pass_mudflap_2 = 
@@ -1337,6 +1338,7 @@ struct tree_opt_pass pass_mudflap_2 = 
   TODO_verify_flow | TODO_verify_stmts
   | TODO_dump_func,                     /* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 #include "gt-tree-mudflap.h"
Index: tree-ssa-copy.c
===================================================================
--- tree-ssa-copy.c	(revision 126958)
+++ tree-ssa-copy.c	(working copy)
@@ -1147,6 +1147,7 @@ struct tree_opt_pass pass_copy_prop =
     | TODO_verify_ssa
     | TODO_update_ssa,			/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 static bool
@@ -1186,4 +1187,5 @@ struct tree_opt_pass pass_store_copy_pro
     | TODO_verify_ssa
     | TODO_update_ssa,			/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: cfglayout.c
===================================================================
--- cfglayout.c	(revision 126958)
+++ cfglayout.c	(working copy)
@@ -373,6 +373,7 @@ struct tree_opt_pass pass_into_cfg_layou
   0,                                    /* todo_flags_start */
   TODO_dump_func,                       /* todo_flags_finish */
   0                                     /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 struct tree_opt_pass pass_outof_cfg_layout_mode =
@@ -390,6 +391,7 @@ struct tree_opt_pass pass_outof_cfg_layo
   0,                                    /* todo_flags_start */
   TODO_dump_func,                       /* todo_flags_finish */
   0                                     /* letter */
+  ,0					/* works_with_tuples_p */
 };
 \f
 /* Return sope resulting from combination of S1 and S2.  */
Index: tree-ssa-forwprop.c
===================================================================
--- tree-ssa-forwprop.c	(revision 126958)
+++ tree-ssa-forwprop.c	(working copy)
@@ -1068,6 +1068,7 @@ struct tree_opt_pass pass_forwprop = {
   | TODO_update_ssa
   | TODO_verify_ssa,		/* todo_flags_finish */
   0				/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 
@@ -1367,4 +1368,5 @@ struct tree_opt_pass pass_phiprop = {
   | TODO_update_ssa
   | TODO_verify_ssa,		/* todo_flags_finish */
   0				/* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: tree-ssa-dce.c
===================================================================
--- tree-ssa-dce.c	(revision 126958)
+++ tree-ssa-dce.c	(working copy)
@@ -917,6 +917,7 @@ struct tree_opt_pass pass_dce =
   0,					/* todo_flags_start */
   TODO_dump_func | TODO_verify_ssa,	/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 struct tree_opt_pass pass_dce_loop =
@@ -934,6 +935,7 @@ struct tree_opt_pass pass_dce_loop =
   0,					/* todo_flags_start */
   TODO_dump_func | TODO_verify_ssa,	/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 struct tree_opt_pass pass_cd_dce =
@@ -952,4 +954,5 @@ struct tree_opt_pass pass_cd_dce =
   TODO_dump_func | TODO_verify_ssa
   | TODO_verify_flow,			/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: tree-ssa.c
===================================================================
--- tree-ssa.c	(revision 126958)
+++ tree-ssa.c	(working copy)
@@ -1351,6 +1351,7 @@ struct tree_opt_pass pass_early_warn_uni
   0,					/* todo_flags_start */
   0,                                    /* todo_flags_finish */
   0				        /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 struct tree_opt_pass pass_late_warn_uninitialized =
@@ -1368,4 +1369,5 @@ struct tree_opt_pass pass_late_warn_unin
   0,					/* todo_flags_start */
   0,                                    /* todo_flags_finish */
   0				        /* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: regclass.c
===================================================================
--- regclass.c	(revision 126958)
+++ regclass.c	(working copy)
@@ -940,6 +940,7 @@ struct tree_opt_pass pass_regclass_init 
   0,                                    /* todo_flags_start */
   0,                                    /* todo_flags_finish */
   'k'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 
@@ -2513,6 +2514,7 @@ struct tree_opt_pass pass_subregs_of_mod
   0,                                    /* todo_flags_start */
   0,                                    /* todo_flags_finish */
   0                                     /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 struct tree_opt_pass pass_subregs_of_mode_finish =
@@ -2530,6 +2532,7 @@ struct tree_opt_pass pass_subregs_of_mod
   0,                                    /* todo_flags_start */
   0,                                    /* todo_flags_finish */
   0                                     /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 
Index: integrate.c
===================================================================
--- integrate.c	(revision 126958)
+++ integrate.c	(working copy)
@@ -314,6 +314,7 @@ struct tree_opt_pass pass_initial_value_
   0,                                    /* todo_flags_start */
   TODO_dump_func,                       /* todo_flags_finish */
   0                                     /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 /* If the backend knows where to allocate pseudos for hard
Index: tree-optimize.c
===================================================================
--- tree-optimize.c	(revision 126958)
+++ tree-optimize.c	(working copy)
@@ -77,6 +77,7 @@ struct tree_opt_pass pass_all_optimizati
   0,					/* todo_flags_start */
   0,					/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 /* Gate: execute, or not, all of the non-trivial optimizations.  */
@@ -103,6 +104,7 @@ struct tree_opt_pass pass_early_local_pa
   0,					/* todo_flags_start */
   TODO_remove_functions,		/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 static unsigned int
@@ -138,6 +140,7 @@ struct tree_opt_pass pass_all_early_opti
   0,					/* todo_flags_start */
   0,					/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 /* Pass: cleanup the CFG just before expanding trees to RTL.
@@ -167,6 +170,7 @@ struct tree_opt_pass pass_cleanup_cfg =
   0,					/* todo_flags_start */
   TODO_dump_func,					/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 
@@ -200,6 +204,7 @@ struct tree_opt_pass pass_cleanup_cfg_po
   0,					/* todo_flags_start */
   TODO_dump_func,					/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 /* Pass: do the actions required to finish with tree-ssa optimization
@@ -232,6 +237,7 @@ struct tree_opt_pass pass_free_datastruc
   0,					/* todo_flags_start */
   0,					/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 /* Pass: free cfg annotations.  */
 
@@ -259,6 +265,7 @@ struct tree_opt_pass pass_free_cfg_annot
   0,					/* todo_flags_start */
   0,					/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 /* Pass: fixup_cfg.  IPA passes, compilation of earlier functions or inlining
@@ -346,6 +353,7 @@ struct tree_opt_pass pass_init_datastruc
   0,					/* todo_flags_start */
   0,					/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 void
@@ -362,7 +370,10 @@ tree_lowering_passes (tree fn)
     execute_pass_list (pass_early_local_passes.sub);
   free_dominance_info (CDI_POST_DOMINATORS);
   free_dominance_info (CDI_DOMINATORS);
+
+  /* FIXME tuples:
   compact_blocks ();
+  */
   current_function_decl = saved_current_function_decl;
   bitmap_obstack_release (NULL);
   pop_cfun ();
Index: tree-object-size.c
===================================================================
--- tree-object-size.c	(revision 126958)
+++ tree-object-size.c	(working copy)
@@ -1079,4 +1079,5 @@ struct tree_opt_pass pass_object_sizes =
   0,					/* todo_flags_start */
   TODO_dump_func | TODO_verify_ssa,	/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: combine.c
===================================================================
--- combine.c	(revision 126958)
+++ combine.c	(working copy)
@@ -12934,5 +12934,6 @@ struct tree_opt_pass pass_combine =
   TODO_df_finish |
   TODO_ggc_collect,                     /* todo_flags_finish */
   'c'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
Index: tree-outof-ssa.c
===================================================================
--- tree-outof-ssa.c	(revision 126958)
+++ tree-outof-ssa.c	(working copy)
@@ -1323,4 +1323,5 @@ struct tree_opt_pass pass_del_ssa = 
   | TODO_ggc_collect
   | TODO_remove_unused_locals,		/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: bb-reorder.c
===================================================================
--- bb-reorder.c	(revision 126958)
+++ bb-reorder.c	(working copy)
@@ -2087,6 +2087,7 @@ struct tree_opt_pass pass_duplicate_comp
   0,                                    /* todo_flags_start */
   TODO_dump_func,                       /* todo_flags_finish */
   0                                     /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 
@@ -2237,6 +2238,7 @@ struct tree_opt_pass pass_reorder_blocks
   0,                                    /* todo_flags_start */
   TODO_dump_func,                       /* todo_flags_finish */
   'B'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 static bool
@@ -2275,6 +2277,7 @@ struct tree_opt_pass pass_partition_bloc
   0,                                    /* todo_flags_start */
   TODO_dump_func,                       /* todo_flags_finish */
   0                                     /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 
Index: stack-ptr-mod.c
===================================================================
--- stack-ptr-mod.c	(revision 126958)
+++ stack-ptr-mod.c	(working copy)
@@ -107,4 +107,5 @@ struct tree_opt_pass pass_stack_ptr_mod 
   0,                                    /* todo_flags_start */
   0,                                    /* todo_flags_finish */
   0                                     /* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: var-tracking.c
===================================================================
--- var-tracking.c	(revision 126958)
+++ var-tracking.c	(working copy)
@@ -3298,5 +3298,6 @@ struct tree_opt_pass pass_variable_track
   0,                                    /* todo_flags_start */
   TODO_dump_func,                       /* todo_flags_finish */
   'V'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
Index: tree-profile.c
===================================================================
--- tree-profile.c	(revision 126958)
+++ tree-profile.c	(working copy)
@@ -451,6 +451,7 @@ struct tree_opt_pass pass_tree_profile =
   0,					/* todo_flags_start */
   TODO_verify_stmts | TODO_dump_func,	/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 struct profile_hooks tree_profile_hooks =
Index: tree-vect-generic.c
===================================================================
--- tree-vect-generic.c	(revision 126958)
+++ tree-vect-generic.c	(working copy)
@@ -519,6 +519,7 @@ struct tree_opt_pass pass_lower_vector =
   TODO_dump_func | TODO_ggc_collect
     | TODO_verify_stmts,		/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 struct tree_opt_pass pass_lower_vector_ssa = 
@@ -538,6 +539,7 @@ struct tree_opt_pass pass_lower_vector_s
     | TODO_verify_ssa
     | TODO_verify_stmts | TODO_verify_flow,
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 #include "gt-tree-vect-generic.h"
Index: reg-stack.c
===================================================================
--- reg-stack.c	(revision 126958)
+++ reg-stack.c	(working copy)
@@ -3216,6 +3216,7 @@ struct tree_opt_pass pass_stack_regs =
   0,                                    /* todo_flags_start */
   0,                                    /* todo_flags_finish */
   0                                     /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 /* Convert register usage from flat register file usage to a stack
@@ -3247,4 +3248,5 @@ struct tree_opt_pass pass_stack_regs_run
   TODO_dump_func |
   TODO_ggc_collect,                     /* todo_flags_finish */
   'k'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: sched-rgn.c
===================================================================
--- sched-rgn.c	(revision 126958)
+++ sched-rgn.c	(working copy)
@@ -3174,6 +3174,7 @@ struct tree_opt_pass pass_sched =
   TODO_verify_flow |
   TODO_ggc_collect,                     /* todo_flags_finish */
   'S'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 struct tree_opt_pass pass_sched2 =
@@ -3194,5 +3195,6 @@ struct tree_opt_pass pass_sched2 =
   TODO_verify_flow |
   TODO_ggc_collect,                     /* todo_flags_finish */
   'R'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
Index: tree-ssa-structalias.c
===================================================================
--- tree-ssa-structalias.c	(revision 126958)
+++ tree-ssa-structalias.c	(working copy)
@@ -5228,6 +5228,7 @@ struct tree_opt_pass pass_ipa_pta =
   0,					/* todo_flags_start */
   0,                                    /* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 /* Initialize the heapvar for statement mapping.  */
Index: tree-cfg.c
===================================================================
--- tree-cfg.c	(revision 126958)
+++ tree-cfg.c	(working copy)
@@ -228,6 +228,7 @@ struct tree_opt_pass pass_build_cfg =
   0,					/* todo_flags_start */
   TODO_verify_stmts | TODO_cleanup_cfg,	/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 /* Search the CFG for any computed gotos.  If found, factor them to a
@@ -1926,6 +1927,7 @@ struct tree_opt_pass pass_remove_useless
   0,					/* todo_flags_start */
   TODO_dump_func,			/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 /* Remove PHI nodes associated with basic block BB and all edges out of BB.  */
@@ -5725,6 +5727,7 @@ struct tree_opt_pass pass_split_crit_edg
   0,                             /* todo_flags_start */
   TODO_dump_func,                /* todo_flags_finish */
   0                              /* letter */
+  ,0				 /* works_with_tuples_p */
 };
 
 \f
@@ -5920,6 +5923,7 @@ struct tree_opt_pass pass_warn_function_
   0,					/* todo_flags_start */
   0,					/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 /* Emit noreturn warnings.  */
@@ -5952,4 +5956,5 @@ struct tree_opt_pass pass_warn_function_
   0,					/* todo_flags_start */
   0,					/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: passes.c
===================================================================
--- passes.c	(revision 126958)
+++ passes.c	(working copy)
@@ -300,6 +300,7 @@ struct tree_opt_pass pass_rest_of_compil
   0,                                    /* todo_flags_start */
   TODO_ggc_collect,                     /* todo_flags_finish */
   0                                     /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 static bool
@@ -323,6 +324,7 @@ struct tree_opt_pass pass_postreload =
   0,                                    /* todo_flags_start */
   TODO_ggc_collect,                     /* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 
@@ -1070,6 +1072,12 @@ execute_one_pass (struct tree_opt_pass *
   unsigned int todo_after = 0;
 
   current_pass = pass;
+
+  /* Imagine there are no trees... it's easy if you try.  Eventually,
+     everything'll be tuples, and the world will be as one.  */
+  if (!pass->works_with_tuples_p)
+    return false;
+
   /* See if we're supposed to run this pass.  */
   if (pass->gate && !pass->gate ())
     return false;
Index: tree-ssa-reassoc.c
===================================================================
--- tree-ssa-reassoc.c	(revision 126958)
+++ tree-ssa-reassoc.c	(working copy)
@@ -1497,4 +1497,5 @@ struct tree_opt_pass pass_reassoc =
   0,					/* todo_flags_start */
   TODO_dump_func | TODO_ggc_collect | TODO_verify_ssa, /* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };
Index: combine-stack-adj.c
===================================================================
--- combine-stack-adj.c	(revision 126958)
+++ combine-stack-adj.c	(working copy)
@@ -490,5 +490,6 @@ struct tree_opt_pass pass_stack_adjustme
   TODO_dump_func |
   TODO_ggc_collect,                     /* todo_flags_finish */
   0                                     /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
Index: cfgrtl.c
===================================================================
--- cfgrtl.c	(revision 126958)
+++ cfgrtl.c	(working copy)
@@ -418,6 +418,7 @@ struct tree_opt_pass pass_free_cfg =
   0,                                    /* todo_flags_start */
   0,                                    /* todo_flags_finish */
   0                                     /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 /* Return RTX to emit after when we want to emit code on the entry of function.  */
Index: dce.c
===================================================================
--- dce.c	(revision 126958)
+++ dce.c	(working copy)
@@ -502,6 +502,7 @@ struct tree_opt_pass pass_ud_rtl_dce =
   TODO_df_finish |
   TODO_ggc_collect,                     /* todo_flags_finish */
   'w'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
 /* -------------------------------------------------------------------------
@@ -809,5 +810,6 @@ struct tree_opt_pass pass_fast_rtl_dce =
   TODO_df_finish |
   TODO_ggc_collect,                     /* todo_flags_finish */
   'w'                                   /* letter */
+  ,0					/* works_with_tuples_p */
 };
 
Index: tree-ssanames.c
===================================================================
--- tree-ssanames.c	(revision 126958)
+++ tree-ssanames.c	(working copy)
@@ -359,4 +359,5 @@ struct tree_opt_pass pass_release_ssa_na
   0,					/* todo_flags_start */
   0,					/* todo_flags_finish */
   0					/* letter */
+  ,0					/* works_with_tuples_p */
 };

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

* Re: [tuples] add works_with_tuples_p flag to tree_opt_pass
  2007-07-27 14:28 [tuples] add works_with_tuples_p flag to tree_opt_pass Aldy Hernandez
@ 2007-07-27 16:42 ` Andrew Pinski
  2007-07-27 17:16   ` Aldy Hernandez
  0 siblings, 1 reply; 4+ messages in thread
From: Andrew Pinski @ 2007-07-27 16:42 UTC (permalink / raw)
  To: Aldy Hernandez; +Cc: dnovillo, amacleod, gcc-patches, jh

On 7/27/07, Aldy Hernandez <aldyh@redhat.com> wrote:
> This patch adds a new flag to tree_opt_pass so we can enable passes as
> they get converted.  I have also disabled all passes.
>
> I removed the check for DECL_SAVED_TREE in cgraph_analyze_functions as
> discussed with Honza.
>
> Finally, I have removed the exit on flag_gimple_only, as we can now get
> through the entire compilation process, now that we've disabled the non
> working passes (ahem, all of them).  I haven't removed the flag entirely,
> as we may need it further on.

How about using properties instead since this is going away and would
be easier to remove?

Some thing like PROP_NON_TUPLES.

Thanks,
Andrew Pinski

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

* Re: [tuples] add works_with_tuples_p flag to tree_opt_pass
  2007-07-27 16:42 ` Andrew Pinski
@ 2007-07-27 17:16   ` Aldy Hernandez
  2007-07-27 17:19     ` Diego Novillo
  0 siblings, 1 reply; 4+ messages in thread
From: Aldy Hernandez @ 2007-07-27 17:16 UTC (permalink / raw)
  To: Andrew Pinski; +Cc: dnovillo, amacleod, gcc-patches, jh

> How about using properties instead since this is going away and would
> be easier to remove?
> 
> Some thing like PROP_NON_TUPLES.

Well, mostly because I've already coded it, and my RSI didn't like it
too much.  But patches are very welcome!

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

* Re: [tuples] add works_with_tuples_p flag to tree_opt_pass
  2007-07-27 17:16   ` Aldy Hernandez
@ 2007-07-27 17:19     ` Diego Novillo
  0 siblings, 0 replies; 4+ messages in thread
From: Diego Novillo @ 2007-07-27 17:19 UTC (permalink / raw)
  To: Aldy Hernandez; +Cc: Andrew Pinski, amacleod, gcc-patches, jh

On 7/27/07 1:03 PM, Aldy Hernandez wrote:
>> How about using properties instead since this is going away and would
>> be easier to remove?
>>
>> Some thing like PROP_NON_TUPLES.
> 
> Well, mostly because I've already coded it, and my RSI didn't like it
> too much.  But patches are very welcome!

It would be the same amount of changes and since it's something that
will not survive the merge, I don't think it matters much.  But if
someone wants to change it, sure.

Aldy has already made it a little bit merge-proof by putting the ',' on
the new line.  Thanks for that, btw.

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

end of thread, other threads:[~2007-07-27 17:11 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-07-27 14:28 [tuples] add works_with_tuples_p flag to tree_opt_pass Aldy Hernandez
2007-07-27 16:42 ` Andrew Pinski
2007-07-27 17:16   ` Aldy Hernandez
2007-07-27 17:19     ` 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).