public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* tree-pass datastructure preparation for introduction of extra IPA hooks and removal of RTL dump letters.
@ 2008-03-18 20:47 Jan Hubicka
  2008-03-18 21:11 ` Kenneth Zadeck
  2008-03-18 22:02 ` Diego Novillo
  0 siblings, 2 replies; 5+ messages in thread
From: Jan Hubicka @ 2008-03-18 20:47 UTC (permalink / raw)
  To: gcc-patches, dnovillo, rguenther, zadeck

Hi,
this mechanical patch update pass manager datastructures to simple inheritance
model as discussed.  Now there is base "opt_pass" and inherited
"gimple_opt_pass", "rtl_opt_pass" and "simple_ipa_pass".  The plan is to add
also non-simpe "ipa_pass" having all the new hooks, but I am deffering
everything possible to followup patch. This patch is ugly enough as it is.

The patch also drop RTL dumping letters as discussed earlier (Dataflow merge
run out of rtl dump letters).  I kept all the infrastructure that I will remove
by followup too.

The slightly earlier version of patch bootstrapped/regtested i686-linux, I am
retesting after some last minute editing.  OK if it passes?

	* tree-vrp.c: Update tree_pass descriptors.
	* regrename.c: Update tree_pass descriptors.
	* fwprop.c: Update tree_pass descriptors.
	* doc/invoke.texi: Remove documentation of dropped -d? flags.
	* tree-into-ssa.c: Update tree_pass descriptors.
	* tree-dump.c: Update tree_pass descriptors.
	* tree-complex.c: Update tree_pass descriptors.
	* tree-dump.h: Update tree_pass descriptors.
	* see.c: Update tree_pass descriptors.
	* cgraphbuild.c: Update tree_pass descriptors.
	* tracer.c: Update tree_pass descriptors.
	* tree-loop-distribution.c: Update tree_pass descriptors.
	* cgraph.c: Update tree_pass descriptors.
	* postreload-gcse.c: Update tree_pass descriptors.
	* postreload.c: Update tree_pass descriptors.
	* tree-ssa-loop-ch.c: Update tree_pass descriptors.
	* tree-tailcall.c: Update tree_pass descriptors.
	* tree-pass.h (tree_opt_pass): Rename to ...
	(opt_pass) ... this one; add "type" field and remove letter field.
	(gimple_opt_pass, rtl_opt_pass, simple_ipa_opt_pass): New.
	(execute_pass_list, execute_ipa_pass_list, all_passes, all_ipa_passes,
	all_lowering_passes): Update declaration.
	* ipa-cp.c: Update tree_pass descriptors.
	* final.c: Update tree_pass descriptors.
	* omp-low.c: Update tree_pass descriptors.
	* tree-ssa-dse.c: Update tree_pass descriptors.
	* ipa-reference.c: Update tree_pass descriptors.
	* tree-ssa-uncprop.c: Update tree_pass descriptors.
	* auto-inc-dec.c: Update tree_pass descriptors.
	* reorg.c: Update tree_pass descriptors.
	* cgraphunit.c: Update tree_pass descriptors.
	* tree-ssa-copyrename.c: Update tree_pass descriptors.
	* tree-ssa-ccp.c: Update tree_pass descriptors.
	* df-core.c: Update tree_pass descriptors.
	* mode-switching.c: Update tree_pass descriptors.
	* tree-nomudflap.c: Update tree_pass descriptors.
	* modulo-sched.c: Update tree_pass descriptors.
	* ipa-pure-const.c: Update tree_pass descriptors.
	* cse.c: Update tree_pass descriptors.
	* web.c: Update tree_pass descriptors.
	* tree-stdarg.c: Update tree_pass descriptors.
	* tree-ssa-math-opts.c: Update tree_pass descriptors.
	* tree-ssa-dom.c: Update tree_pass descriptors.
	* tree-nrv.c: Update tree_pass descriptors.
	* tree-ssa-alias.c: Update tree_pass descriptors.
	* loop-init.c: Update tree_pass descriptors.
	* gimple-low.c: Update tree_pass descriptors.
	* ipa-inline.c: Update tree_pass descriptors.
	* tree-ssa-sink.c: Update tree_pass descriptors.
	* global.c: Update tree_pass descriptors.
	* ifcvt.c: Update tree_pass descriptors.
	* jump.c: Update tree_pass descriptors.
	* predict.c: Update tree_pass descriptors.
	* tree-ssa-loop.c: Update tree_pass descriptors.
	* recog.c: Update tree_pass descriptors.
	* dse.c: Update tree_pass descriptors.
	* tree-ssa-ifcombine.c: Update tree_pass descriptors.
	* tree-eh.c: Update tree_pass descriptors.
	* regmove.c: Update tree_pass descriptors.
	* local-alloc.c
	* function.c: Update tree_pass descriptors.
	* tree-vectorizer.c: Update tree_pass descriptors.
	* gcse.c: Update tree_pass descriptors.
	* ipa-type-escape.c: Update tree_pass descriptors.
	* tree-if-conv.c: Update tree_pass descriptors.
	* init-regs.c: Update tree_pass descriptors.
	* ipa.c: Update tree_pass descriptors.
	* tree-ssa-phiopt.c: Update tree_pass descriptors.
	* rtl-factoring.c: Update tree_pass descriptors.
	* lower-subreg.c: Update tree_pass descriptors.
	* bt-load.c: Update tree_pass descriptors.
	* tree-dfa.c: Update tree_pass descriptors.
	* except.c: Update tree_pass descriptors.
	* emit-rtl.c: Update tree_pass descriptors.
	* cfgexpand.c: Update tree_pass descriptors.
	* tree-cfgcleanup.c: Update tree_pass descriptors.
	* cfgcleanup.c: Update tree_pass descriptors.
	* tree-ssa-pre.c: Update tree_pass descriptors.
	* tree-sra.c: Update tree_pass descriptors.
	* tree-mudflap.c: Update tree_pass descriptors.
	* tree-ssa-copy.c: Update tree_pass descriptors.
	* cfglayout.c: Update tree_pass descriptors.
	* tree-ssa-forwprop.c: Update tree_pass descriptors.
	* tree-ssa-dce.c: Update tree_pass descriptors.
	* tree-ssa.c: Update tree_pass descriptors.
	* regclass.c: Update tree_pass descriptors.
	* integrate.c: Update tree_pass descriptors.
	* tree-optimize.c: Update tree_pass descriptors.
	* tree-ssa-phiprop.c: Update tree_pass descriptors.
	* tree-object-size.c: Update tree_pass descriptors.
	* combine.c: Update tree_pass descriptors.
	* tree-outof-ssa.c: Update tree_pass descriptors.
	* bb-reorder.c: Update tree_pass descriptors.
	* stack-ptr-mod.c: Update tree_pass descriptors.
	* var-tracking.c: Update tree_pass descriptors.
	* tree-profile.c: Update tree_pass descriptors.
	* tree-vect-generic.c: Update tree_pass descriptors.
	* reg-stack.c: Update tree_pass descriptors.
	* sched-rgn.c: Update tree_pass descriptors.
	* tree-ssa-structalias.c: Update tree_pass descriptors.
	* tree-cfg.c: Update tree_pass descriptors.
	* passes.c (current_pass): Update declaration.
	(finish_optimization_passes): Update.
	(all_passes, all_ipa_passes, all_lowering_passes): Update declaration.
	(register_one_dump_file, register_dump_files_1, next_pass_1):
 	Update arguments.
	(init_optimization_passes): Update handling of new types.
	(execute_one_pass, execute_pass_list, execute_ipa_pass_list): Update.
	* ipa-struct-reorg.c: Update tree_pass descriptors.
	* tree-ssa-reassoc.c: Update tree_pass descriptors.
	* combine-stack-adj.c: Update tree_pass descriptors.
	* cfgrtl.c: Update tree_pass descriptors.
	* dce.c: Update tree_pass descriptors.
	* tree-ssanames.c: Update tree_pass descriptors.

	* testsuite/gcc.dg/20050811-2.c: Update dumping flags.
	* testsuite/gcc.dg/sms-2.c: Update dumping flags.
	* testsuite/gcc.dg/var-expand1.c: Update dumping flags.
	* testsuite/gcc.dg/var-expand3.c: Update dumping flags.
	* testsuite/gcc.dg/pr30957-1.c: Update dumping flags.
	* testsuite/gcc.dg/cpp/cmdlne-dD-dM.c: Update dumping flags.
	* testsuite/gcc.dg/cpp/cmdlne-dM-dD.c: Update dumping flags.
	* testsuite/gcc.dg/20050811-1.c: Update dumping flags.

Index: tree-vrp.c
===================================================================
*** tree-vrp.c	(revision 133313)
--- tree-vrp.c	(working copy)
*************** gate_vrp (void)
*** 6207,6214 ****
    return flag_tree_vrp != 0;
  }
  
! struct tree_opt_pass pass_vrp =
  {
    "vrp",				/* name */
    gate_vrp,				/* gate */
    execute_vrp,				/* execute */
--- 6207,6216 ----
    return flag_tree_vrp != 0;
  }
  
! struct gimple_opt_pass pass_vrp =
  {
+  {
+   GIMPLE_PASS,
    "vrp",				/* name */
    gate_vrp,				/* gate */
    execute_vrp,				/* execute */
*************** struct tree_opt_pass pass_vrp =
*** 6224,6229 ****
      | TODO_ggc_collect
      | TODO_verify_ssa
      | TODO_dump_func
!     | TODO_update_ssa,			/* todo_flags_finish */
!   0					/* letter */
  };
--- 6226,6231 ----
      | TODO_ggc_collect
      | TODO_verify_ssa
      | TODO_dump_func
!     | TODO_update_ssa			/* todo_flags_finish */
!  }
  };
Index: regrename.c
===================================================================
*** regrename.c	(revision 133313)
--- regrename.c	(working copy)
*************** rest_of_handle_regrename (void)
*** 1938,1945 ****
    return 0;
  }
  
! struct tree_opt_pass pass_regrename =
  {
    "rnreg",                              /* name */
    gate_handle_regrename,                /* gate */
    rest_of_handle_regrename,             /* execute */
--- 1938,1947 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_regrename =
  {
+  {
+   RTL_PASS,
    "rnreg",                              /* name */
    gate_handle_regrename,                /* gate */
    rest_of_handle_regrename,             /* execute */
*************** struct tree_opt_pass pass_regrename =
*** 1952,1959 ****
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_df_finish | TODO_verify_rtl_sharing |
!   TODO_dump_func,                       /* todo_flags_finish */
!   'n'                                   /* letter */
  };
  
  static bool
--- 1954,1961 ----
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_df_finish | TODO_verify_rtl_sharing |
!   TODO_dump_func                        /* todo_flags_finish */
!  }
  };
  
  static bool
*************** rest_of_handle_cprop (void)
*** 1971,1978 ****
    return 0;
  }
  
! struct tree_opt_pass pass_cprop_hardreg =
  {
    "cprop_hardreg",                      /* name */
    gate_handle_cprop,                    /* gate */
    rest_of_handle_cprop,                 /* execute */
--- 1973,1982 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_cprop_hardreg =
  {
+  {
+   RTL_PASS,
    "cprop_hardreg",                      /* name */
    gate_handle_cprop,                    /* gate */
    rest_of_handle_cprop,                 /* execute */
*************** struct tree_opt_pass pass_cprop_hardreg 
*** 1984,1990 ****
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   TODO_dump_func | TODO_verify_rtl_sharing, /* todo_flags_finish */
!   'n'                                   /* letter */
  };
  
--- 1988,1994 ----
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   TODO_dump_func | TODO_verify_rtl_sharing /* todo_flags_finish */
!  }
  };
  
Index: fwprop.c
===================================================================
*** fwprop.c	(revision 133313)
--- fwprop.c	(working copy)
*************** fwprop (void)
*** 1021,1028 ****
    return 0;
  }
  
! struct tree_opt_pass pass_rtl_fwprop =
  {
    "fwprop1",                            /* name */
    gate_fwprop,				/* gate */
    fwprop,				/* execute */
--- 1021,1030 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_rtl_fwprop =
  {
+  {
+   RTL_PASS,
    "fwprop1",                            /* name */
    gate_fwprop,				/* gate */
    fwprop,				/* execute */
*************** struct tree_opt_pass pass_rtl_fwprop =
*** 1035,1042 ****
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_df_finish | TODO_verify_rtl_sharing |
!   TODO_dump_func,                       /* todo_flags_finish */
!   0                                     /* letter */
  };
  
  static unsigned int
--- 1037,1044 ----
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_df_finish | TODO_verify_rtl_sharing |
!   TODO_dump_func                        /* todo_flags_finish */
!  }
  };
  
  static unsigned int
*************** fwprop_addr (void)
*** 1063,1070 ****
    return 0;
  }
  
! struct tree_opt_pass pass_rtl_fwprop_addr =
  {
    "fwprop2",                            /* name */
    gate_fwprop,				/* gate */
    fwprop_addr,				/* execute */
--- 1065,1074 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_rtl_fwprop_addr =
  {
+  {
+   RTL_PASS,
    "fwprop2",                            /* name */
    gate_fwprop,				/* gate */
    fwprop_addr,				/* execute */
*************** struct tree_opt_pass pass_rtl_fwprop_add
*** 1077,1082 ****
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_df_finish | TODO_verify_rtl_sharing |
!   TODO_dump_func,                       /* todo_flags_finish */
!   0                                     /* letter */
  };
--- 1081,1086 ----
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_df_finish | TODO_verify_rtl_sharing |
!   TODO_dump_func                        /* todo_flags_finish */
!  }
  };
Index: doc/invoke.texi
===================================================================
*** doc/invoke.texi	(revision 133313)
--- doc/invoke.texi	(working copy)
*************** letters for use in @var{letters} and @va
*** 4446,4484 ****
  @opindex dA
  Annotate the assembler output with miscellaneous debugging information.
  
- @item -dB
  @itemx -fdump-rtl-bbro
- @opindex dB
  @opindex fdump-rtl-bbro
  Dump after block reordering, to @file{@var{file}.148r.bbro}.
  
- @item -dc
  @itemx -fdump-rtl-combine
- @opindex dc
  @opindex fdump-rtl-combine
  Dump after the RTL instruction combination pass, to the file
  @file{@var{file}.129r.combine}.
  
- @item -dC
  @itemx -fdump-rtl-ce1
  @itemx -fdump-rtl-ce2
- @opindex dC
  @opindex fdump-rtl-ce1
  @opindex fdump-rtl-ce2
! @option{-dC} and @option{-fdump-rtl-ce1} enable dumping after the
! first if conversion, to the file @file{@var{file}.117r.ce1}.  @option{-dC}
! and @option{-fdump-rtl-ce2} enable dumping after the second if
  conversion, to the file @file{@var{file}.130r.ce2}.
  
- @item -dd
  @itemx -fdump-rtl-btl
  @itemx -fdump-rtl-dbr
- @opindex dd
  @opindex fdump-rtl-btl
  @opindex fdump-rtl-dbr
! @option{-dd} and @option{-fdump-rtl-btl} enable dumping after branch
! target load optimization, to @file{@var{file}.31.btl}.  @option{-dd}
! and @option{-fdump-rtl-dbr} enable dumping after delayed branch
  scheduling, to @file{@var{file}.36.dbr}.
  
  @item -dD
--- 4446,4476 ----
  @opindex dA
  Annotate the assembler output with miscellaneous debugging information.
  
  @itemx -fdump-rtl-bbro
  @opindex fdump-rtl-bbro
  Dump after block reordering, to @file{@var{file}.148r.bbro}.
  
  @itemx -fdump-rtl-combine
  @opindex fdump-rtl-combine
  Dump after the RTL instruction combination pass, to the file
  @file{@var{file}.129r.combine}.
  
  @itemx -fdump-rtl-ce1
  @itemx -fdump-rtl-ce2
  @opindex fdump-rtl-ce1
  @opindex fdump-rtl-ce2
! @option{-fdump-rtl-ce1} enable dumping after the
! first if conversion, to the file @file{@var{file}.117r.ce1}. 
! @option{-fdump-rtl-ce2} enable dumping after the second if
  conversion, to the file @file{@var{file}.130r.ce2}.
  
  @itemx -fdump-rtl-btl
  @itemx -fdump-rtl-dbr
  @opindex fdump-rtl-btl
  @opindex fdump-rtl-dbr
! @option{-fdump-rtl-btl} enable dumping after branch
! target load optimization, to @file{@var{file}.31.btl}.  
! @option{-fdump-rtl-dbr} enable dumping after delayed branch
  scheduling, to @file{@var{file}.36.dbr}.
  
  @item -dD
*************** scheduling, to @file{@var{file}.36.dbr}.
*** 4486,4559 ****
  Dump all macro definitions, at the end of preprocessing, in addition to
  normal output.
  
- @item -dE
  @itemx -fdump-rtl-ce3
- @opindex dE
  @opindex fdump-rtl-ce3
  Dump after the third if conversion, to @file{@var{file}.146r.ce3}.
  
- @item -df
  @itemx -fdump-rtl-cfg
  @itemx -fdump-rtl-life
- @opindex df
  @opindex fdump-rtl-cfg
  @opindex fdump-rtl-life
! @option{-df} and @option{-fdump-rtl-cfg} enable dumping after control
! and data flow analysis, to @file{@var{file}.116r.cfg}.  @option{-df}
! and @option{-fdump-rtl-cfg} enable dumping dump after life analysis,
  to @file{@var{file}.128r.life1} and @file{@var{file}.135r.life2}.
  
- @item -dg
  @itemx -fdump-rtl-greg
- @opindex dg
  @opindex fdump-rtl-greg
  Dump after global register allocation, to @file{@var{file}.139r.greg}.
  
- @item -dG
  @itemx -fdump-rtl-gcse
  @itemx -fdump-rtl-bypass
- @opindex dG
  @opindex fdump-rtl-gcse
  @opindex fdump-rtl-bypass
! @option{-dG} and @option{-fdump-rtl-gcse} enable dumping after GCSE, to
! @file{@var{file}.114r.gcse}.  @option{-dG} and @option{-fdump-rtl-bypass}
  enable dumping after jump bypassing and control flow optimizations, to
  @file{@var{file}.115r.bypass}.
  
- @item -dh
  @itemx -fdump-rtl-eh
- @opindex dh
  @opindex fdump-rtl-eh
  Dump after finalization of EH handling code, to @file{@var{file}.02.eh}.
  
- @item -di
  @itemx -fdump-rtl-sibling
- @opindex di
  @opindex fdump-rtl-sibling
  Dump after sibling call optimizations, to @file{@var{file}.106r.sibling}.
  
- @item -dj
  @itemx -fdump-rtl-jump
- @opindex dj
  @opindex fdump-rtl-jump
  Dump after the first jump optimization, to @file{@var{file}.112r.jump}.
  
- @item -dk
  @itemx -fdump-rtl-stack
- @opindex dk
  @opindex fdump-rtl-stack
  Dump after conversion from GCC's "flat register file" registers to the
  x87's stack-like registers, to @file{@var{file}.152r.stack}.
  
- @item -dl
  @itemx -fdump-rtl-lreg
- @opindex dl
  @opindex fdump-rtl-lreg
  Dump after local register allocation, to @file{@var{file}.138r.lreg}.
  
- @item -dL
  @itemx -fdump-rtl-loop2
- @opindex dL
  @opindex fdump-rtl-loop2
  @option{-dL} and @option{-fdump-rtl-loop2} enable dumping after the
  loop optimization pass, to @file{@var{file}.119r.loop2},
--- 4478,4531 ----
  Dump all macro definitions, at the end of preprocessing, in addition to
  normal output.
  
  @itemx -fdump-rtl-ce3
  @opindex fdump-rtl-ce3
  Dump after the third if conversion, to @file{@var{file}.146r.ce3}.
  
  @itemx -fdump-rtl-cfg
  @itemx -fdump-rtl-life
  @opindex fdump-rtl-cfg
  @opindex fdump-rtl-life
! @option{-fdump-rtl-cfg} enable dumping after control
! and data flow analysis, to @file{@var{file}.116r.cfg}.  
! @option{-fdump-rtl-cfg} enable dumping dump after life analysis,
  to @file{@var{file}.128r.life1} and @file{@var{file}.135r.life2}.
  
  @itemx -fdump-rtl-greg
  @opindex fdump-rtl-greg
  Dump after global register allocation, to @file{@var{file}.139r.greg}.
  
  @itemx -fdump-rtl-gcse
  @itemx -fdump-rtl-bypass
  @opindex fdump-rtl-gcse
  @opindex fdump-rtl-bypass
! @option{-fdump-rtl-gcse} enable dumping after GCSE, to
! @file{@var{file}.114r.gcse}.  @option{-fdump-rtl-bypass}
  enable dumping after jump bypassing and control flow optimizations, to
  @file{@var{file}.115r.bypass}.
  
  @itemx -fdump-rtl-eh
  @opindex fdump-rtl-eh
  Dump after finalization of EH handling code, to @file{@var{file}.02.eh}.
  
  @itemx -fdump-rtl-sibling
  @opindex fdump-rtl-sibling
  Dump after sibling call optimizations, to @file{@var{file}.106r.sibling}.
  
  @itemx -fdump-rtl-jump
  @opindex fdump-rtl-jump
  Dump after the first jump optimization, to @file{@var{file}.112r.jump}.
  
  @itemx -fdump-rtl-stack
  @opindex fdump-rtl-stack
  Dump after conversion from GCC's "flat register file" registers to the
  x87's stack-like registers, to @file{@var{file}.152r.stack}.
  
  @itemx -fdump-rtl-lreg
  @opindex fdump-rtl-lreg
  Dump after local register allocation, to @file{@var{file}.138r.lreg}.
  
  @itemx -fdump-rtl-loop2
  @opindex fdump-rtl-loop2
  @option{-dL} and @option{-fdump-rtl-loop2} enable dumping after the
  loop optimization pass, to @file{@var{file}.119r.loop2},
*************** loop optimization pass, to @file{@var{fi
*** 4561,4667 ****
  @file{@var{file}.121r.loop2_invariant}, and
  @file{@var{file}.125r.loop2_done}.
  
- @item -dm
  @itemx -fdump-rtl-sms
- @opindex dm
  @opindex fdump-rtl-sms
  Dump after modulo scheduling, to @file{@var{file}.136r.sms}.
  
- @item -dM
  @itemx -fdump-rtl-mach
- @opindex dM
  @opindex fdump-rtl-mach
  Dump after performing the machine dependent reorganization pass, to
  @file{@var{file}.155r.mach} if that pass exists.
  
- @item -dn
  @itemx -fdump-rtl-rnreg
- @opindex dn
  @opindex fdump-rtl-rnreg
  Dump after register renumbering, to @file{@var{file}.147r.rnreg}.
  
- @item -dN
  @itemx -fdump-rtl-regmove
- @opindex dN
  @opindex fdump-rtl-regmove
  Dump after the register move pass, to @file{@var{file}.132r.regmove}.
  
- @item -do
  @itemx -fdump-rtl-postreload
- @opindex do
  @opindex fdump-rtl-postreload
  Dump after post-reload optimizations, to @file{@var{file}.24.postreload}.
  
- @item -dr
  @itemx -fdump-rtl-expand
- @opindex dr
  @opindex fdump-rtl-expand
  Dump after RTL generation, to @file{@var{file}.104r.expand}.
  
- @item -dR
  @itemx -fdump-rtl-sched2
- @opindex dR
  @opindex fdump-rtl-sched2
  Dump after the second scheduling pass, to @file{@var{file}.149r.sched2}.
  
- @item -ds
  @itemx -fdump-rtl-cse
- @opindex ds
  @opindex fdump-rtl-cse
  Dump after CSE (including the jump optimization that sometimes follows
  CSE), to @file{@var{file}.113r.cse}.
  
- @item -dS
  @itemx -fdump-rtl-sched1
- @opindex dS
  @opindex fdump-rtl-sched1
  Dump after the first scheduling pass, to @file{@var{file}.136r.sched1}.
  
- @item -dt
  @itemx -fdump-rtl-cse2
- @opindex dt
  @opindex fdump-rtl-cse2
  Dump after the second CSE pass (including the jump optimization that
  sometimes follows CSE), to @file{@var{file}.127r.cse2}.
  
- @item -dT
  @itemx -fdump-rtl-tracer
- @opindex dT
  @opindex fdump-rtl-tracer
  Dump after running tracer, to @file{@var{file}.118r.tracer}.
  
- @item -dV
  @itemx -fdump-rtl-vpt
  @itemx -fdump-rtl-vartrack
- @opindex dV
  @opindex fdump-rtl-vpt
  @opindex fdump-rtl-vartrack
! @option{-dV} and @option{-fdump-rtl-vpt} enable dumping after the value
! profile transformations, to @file{@var{file}.10.vpt}.  @option{-dV}
! and @option{-fdump-rtl-vartrack} enable dumping after variable tracking,
  to @file{@var{file}.154r.vartrack}.
  
- @item -dw
  @itemx -fdump-rtl-flow2
- @opindex dw
  @opindex fdump-rtl-flow2
  Dump after the second flow pass, to @file{@var{file}.142r.flow2}.
  
- @item -dz
  @itemx -fdump-rtl-peephole2
- @opindex dz
  @opindex fdump-rtl-peephole2
  Dump after the peephole pass, to @file{@var{file}.145r.peephole2}.
  
- @item -dZ
  @itemx -fdump-rtl-web
- @opindex dZ
  @opindex fdump-rtl-web
  Dump after live range splitting, to @file{@var{file}.126r.web}.
  
- @item -da
  @itemx -fdump-rtl-all
- @opindex da
  @opindex fdump-rtl-all
  Produce all the dumps listed above.
  
--- 4533,4607 ----
  @file{@var{file}.121r.loop2_invariant}, and
  @file{@var{file}.125r.loop2_done}.
  
  @itemx -fdump-rtl-sms
  @opindex fdump-rtl-sms
  Dump after modulo scheduling, to @file{@var{file}.136r.sms}.
  
  @itemx -fdump-rtl-mach
  @opindex fdump-rtl-mach
  Dump after performing the machine dependent reorganization pass, to
  @file{@var{file}.155r.mach} if that pass exists.
  
  @itemx -fdump-rtl-rnreg
  @opindex fdump-rtl-rnreg
  Dump after register renumbering, to @file{@var{file}.147r.rnreg}.
  
  @itemx -fdump-rtl-regmove
  @opindex fdump-rtl-regmove
  Dump after the register move pass, to @file{@var{file}.132r.regmove}.
  
  @itemx -fdump-rtl-postreload
  @opindex fdump-rtl-postreload
  Dump after post-reload optimizations, to @file{@var{file}.24.postreload}.
  
  @itemx -fdump-rtl-expand
  @opindex fdump-rtl-expand
  Dump after RTL generation, to @file{@var{file}.104r.expand}.
  
  @itemx -fdump-rtl-sched2
  @opindex fdump-rtl-sched2
  Dump after the second scheduling pass, to @file{@var{file}.149r.sched2}.
  
  @itemx -fdump-rtl-cse
  @opindex fdump-rtl-cse
  Dump after CSE (including the jump optimization that sometimes follows
  CSE), to @file{@var{file}.113r.cse}.
  
  @itemx -fdump-rtl-sched1
  @opindex fdump-rtl-sched1
  Dump after the first scheduling pass, to @file{@var{file}.136r.sched1}.
  
  @itemx -fdump-rtl-cse2
  @opindex fdump-rtl-cse2
  Dump after the second CSE pass (including the jump optimization that
  sometimes follows CSE), to @file{@var{file}.127r.cse2}.
  
  @itemx -fdump-rtl-tracer
  @opindex fdump-rtl-tracer
  Dump after running tracer, to @file{@var{file}.118r.tracer}.
  
  @itemx -fdump-rtl-vpt
  @itemx -fdump-rtl-vartrack
  @opindex fdump-rtl-vpt
  @opindex fdump-rtl-vartrack
! @option{-fdump-rtl-vpt} enable dumping after the value
! profile transformations, to @file{@var{file}.10.vpt}.
! @option{-fdump-rtl-vartrack} enable dumping after variable tracking,
  to @file{@var{file}.154r.vartrack}.
  
  @itemx -fdump-rtl-flow2
  @opindex fdump-rtl-flow2
  Dump after the second flow pass, to @file{@var{file}.142r.flow2}.
  
  @itemx -fdump-rtl-peephole2
  @opindex fdump-rtl-peephole2
  Dump after the peephole pass, to @file{@var{file}.145r.peephole2}.
  
  @itemx -fdump-rtl-web
  @opindex fdump-rtl-web
  Dump after live range splitting, to @file{@var{file}.126r.web}.
  
  @itemx -fdump-rtl-all
  @opindex fdump-rtl-all
  Produce all the dumps listed above.
  
Index: tree-into-ssa.c
===================================================================
*** tree-into-ssa.c	(revision 133313)
--- tree-into-ssa.c	(working copy)
*************** rewrite_into_ssa (void)
*** 2298,2305 ****
  }
  
  
! struct tree_opt_pass pass_build_ssa = 
  {
    "ssa",				/* name */
    NULL,					/* gate */
    rewrite_into_ssa,			/* execute */
--- 2298,2307 ----
  }
  
  
! struct gimple_opt_pass pass_build_ssa = 
  {
+  {
+   GIMPLE_PASS,
    "ssa",				/* name */
    NULL,					/* gate */
    rewrite_into_ssa,			/* execute */
*************** struct tree_opt_pass pass_build_ssa = 
*** 2313,2320 ****
    0,					/* todo_flags_start */
    TODO_dump_func
      | TODO_verify_ssa
!     | TODO_remove_unused_locals,	/* todo_flags_finish */
!   0					/* letter */
  };
  
  
--- 2315,2322 ----
    0,					/* todo_flags_start */
    TODO_dump_func
      | TODO_verify_ssa
!     | TODO_remove_unused_locals		/* todo_flags_finish */
!  }
  };
  
  
Index: tree-dump.c
===================================================================
*** tree-dump.c	(revision 133313)
--- tree-dump.c	(working copy)
*************** static const struct dump_option_value_in
*** 831,837 ****
  
  unsigned int
  dump_register (const char *suffix, const char *swtch, const char *glob,
! 	       int flags, int letter)
  {
    static int next_dump = FIRST_AUTO_NUMBERED_DUMP;
    int num = next_dump++;
--- 831,837 ----
  
  unsigned int
  dump_register (const char *suffix, const char *swtch, const char *glob,
! 	       int flags)
  {
    static int next_dump = FIRST_AUTO_NUMBERED_DUMP;
    int num = next_dump++;
*************** dump_register (const char *suffix, const
*** 855,861 ****
    extra_dump_files[this].glob = glob;
    extra_dump_files[this].flags = flags;
    extra_dump_files[this].num = num;
-   extra_dump_files[this].letter = letter;
  
    return this + TDI_end;
  }
--- 855,860 ----
Index: tree-complex.c
===================================================================
*** tree-complex.c	(revision 133313)
--- tree-complex.c	(working copy)
*************** tree_lower_complex (void)
*** 1534,1541 ****
    return 0;
  }
  
! struct tree_opt_pass pass_lower_complex = 
  {
    "cplxlower",				/* name */
    0,					/* gate */
    tree_lower_complex,			/* execute */
--- 1534,1543 ----
    return 0;
  }
  
! struct gimple_opt_pass pass_lower_complex = 
  {
+  {
+   GIMPLE_PASS,
    "cplxlower",				/* name */
    0,					/* gate */
    tree_lower_complex,			/* execute */
*************** struct tree_opt_pass pass_lower_complex 
*** 1550,1557 ****
    TODO_dump_func
      | TODO_ggc_collect
      | TODO_update_ssa
!     | TODO_verify_stmts,		/* todo_flags_finish */
!   0					/* letter */
  };
  
  \f
--- 1552,1559 ----
    TODO_dump_func
      | TODO_ggc_collect
      | TODO_update_ssa
!     | TODO_verify_stmts	 		/* todo_flags_finish */
!  }
  };
  
  \f
*************** gate_no_optimization (void)
*** 1582,1589 ****
    return optimize == 0 || sorrycount || errorcount;
  }
  
! struct tree_opt_pass pass_lower_complex_O0 = 
  {
    "cplxlower0",				/* name */
    gate_no_optimization,			/* gate */
    tree_lower_complex_O0,		/* execute */
--- 1584,1593 ----
    return optimize == 0 || sorrycount || errorcount;
  }
  
! struct gimple_opt_pass pass_lower_complex_O0 = 
  {
+  {
+   GIMPLE_PASS,
    "cplxlower0",				/* name */
    gate_no_optimization,			/* gate */
    tree_lower_complex_O0,		/* execute */
*************** struct tree_opt_pass pass_lower_complex_
*** 1597,1601 ****
    0,					/* todo_flags_start */
    TODO_dump_func | TODO_ggc_collect
      | TODO_verify_stmts,		/* todo_flags_finish */
!   0					/* letter */
  };
--- 1601,1605 ----
    0,					/* todo_flags_start */
    TODO_dump_func | TODO_ggc_collect
      | TODO_verify_stmts,		/* todo_flags_finish */
!  }
  };
Index: tree-dump.h
===================================================================
*** tree-dump.h	(revision 133313)
--- tree-dump.h	(working copy)
*************** extern void debug_function (tree, int);
*** 94,100 ****
  extern int dump_flag (dump_info_p, int, const_tree);
  
  extern unsigned int dump_register (const char *, const char *, const char *, 
! 				   int, int);
  
  
  #endif /* ! GCC_TREE_DUMP_H */
--- 94,100 ----
  extern int dump_flag (dump_info_p, int, const_tree);
  
  extern unsigned int dump_register (const char *, const char *, const char *, 
! 				   int);
  
  
  #endif /* ! GCC_TREE_DUMP_H */
Index: see.c
===================================================================
*** see.c	(revision 133313)
--- see.c	(working copy)
*************** rest_of_handle_see (void)
*** 3859,3866 ****
    return 0;
  }
  
! struct tree_opt_pass pass_see =
  {
    "see",				/* name */
    gate_handle_see,			/* gate */
    rest_of_handle_see,			/* execute */
--- 3859,3868 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_see =
  {
+  {
+   RTL_PASS,
    "see",				/* name */
    gate_handle_see,			/* gate */
    rest_of_handle_see,			/* execute */
*************** struct tree_opt_pass pass_see =
*** 3874,3880 ****
    0,					/* todo_flags_start */
    TODO_df_verify |
    TODO_df_finish | TODO_verify_rtl_sharing |
!   TODO_dump_func,			/* todo_flags_finish */
!   'u'					/* letter */
  };
  
--- 3876,3882 ----
    0,					/* todo_flags_start */
    TODO_df_verify |
    TODO_df_finish | TODO_verify_rtl_sharing |
!   TODO_dump_func			/* todo_flags_finish */
!  }
  };
  
Index: cgraphbuild.c
===================================================================
*** cgraphbuild.c	(revision 133313)
--- cgraphbuild.c	(working copy)
*************** build_cgraph_edges (void)
*** 170,177 ****
    return 0;
  }
  
! struct tree_opt_pass pass_build_cgraph_edges =
  {
    NULL,					/* name */
    NULL,					/* gate */
    build_cgraph_edges,			/* execute */
--- 170,178 ----
    return 0;
  }
  
! struct gimple_opt_pass pass_build_cgraph_edges =
  {
+   GIMPLE_PASS,
    NULL,					/* name */
    NULL,					/* gate */
    build_cgraph_edges,			/* execute */
*************** struct tree_opt_pass pass_build_cgraph_e
*** 184,190 ****
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
    0,					/* todo_flags_finish */
-   0					/* letter */
  };
  
  /* Record references to functions and other variables present in the
--- 185,190 ----
*************** rebuild_cgraph_edges (void)
*** 238,245 ****
    return 0;
  }
  
! struct tree_opt_pass pass_rebuild_cgraph_edges =
  {
    NULL,					/* name */
    NULL,					/* gate */
    rebuild_cgraph_edges,			/* execute */
--- 238,247 ----
    return 0;
  }
  
! struct gimple_opt_pass pass_rebuild_cgraph_edges =
  {
+  {
+   GIMPLE_PASS,
    NULL,					/* name */
    NULL,					/* gate */
    rebuild_cgraph_edges,			/* execute */
*************** struct tree_opt_pass pass_rebuild_cgraph
*** 252,256 ****
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
    0,					/* todo_flags_finish */
!   0					/* letter */
  };
--- 254,258 ----
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
    0,					/* todo_flags_finish */
!  }
  };
Index: tracer.c
===================================================================
*** tracer.c	(revision 133313)
--- tracer.c	(working copy)
*************** gate_tracer (void)
*** 378,385 ****
    return (optimize > 0 && flag_tracer && flag_reorder_blocks);
  }
  
! struct tree_opt_pass pass_tracer =
  {
    "tracer",                             /* name */
    gate_tracer,                          /* gate */
    tracer,                               /* execute */
--- 378,387 ----
    return (optimize > 0 && flag_tracer && flag_reorder_blocks);
  }
  
! struct gimple_opt_pass pass_tracer =
  {
+  {
+   GIMPLE_PASS,
    "tracer",                             /* name */
    gate_tracer,                          /* gate */
    tracer,                               /* execute */
*************** struct tree_opt_pass pass_tracer =
*** 393,398 ****
    0,                                    /* todo_flags_start */
    TODO_dump_func
      | TODO_update_ssa
!     | TODO_verify_ssa,                  /* todo_flags_finish */
!   'T'                                   /* letter */
  };
--- 395,400 ----
    0,                                    /* todo_flags_start */
    TODO_dump_func
      | TODO_update_ssa
!     | TODO_verify_ssa                   /* todo_flags_finish */
!  }
  };
Index: tree-loop-distribution.c
===================================================================
*** tree-loop-distribution.c	(revision 133313)
--- tree-loop-distribution.c	(working copy)
*************** gate_tree_loop_distribution (void)
*** 1155,1162 ****
    return flag_tree_loop_distribution != 0;
  }
  
! struct tree_opt_pass pass_loop_distribution =
  {
    "ldist",			/* name */
    gate_tree_loop_distribution,  /* gate */
    tree_loop_distribution,       /* execute */
--- 1155,1164 ----
    return flag_tree_loop_distribution != 0;
  }
  
! struct gimple_opt_pass pass_loop_distribution =
  {
+  {
+   GIMPLE_PASS,
    "ldist",			/* name */
    gate_tree_loop_distribution,  /* gate */
    tree_loop_distribution,       /* execute */
*************** struct tree_opt_pass pass_loop_distribut
*** 1168,1173 ****
    0,				/* properties_provided */
    0,				/* properties_destroyed */
    0,				/* todo_flags_start */
!   TODO_dump_func | TODO_verify_loops,            /* todo_flags_finish */
!   0                             /* letter */  
  };
--- 1170,1175 ----
    0,				/* properties_provided */
    0,				/* properties_destroyed */
    0,				/* todo_flags_start */
!   TODO_dump_func | TODO_verify_loops            /* todo_flags_finish */
!  }
  };
Index: cgraph.c
===================================================================
*** cgraph.c	(revision 133313)
--- cgraph.c	(working copy)
*************** cgraph_add_new_function (tree fndecl, bo
*** 1070,1076 ****
            tree_lowering_passes (fndecl);
  	bitmap_obstack_initialize (NULL);
  	if (!gimple_in_ssa_p (DECL_STRUCT_FUNCTION (fndecl)) && optimize)
! 	  execute_pass_list (pass_early_local_passes.sub);
  	bitmap_obstack_release (NULL);
  	tree_rest_of_compilation (fndecl);
  	pop_cfun ();
--- 1070,1076 ----
            tree_lowering_passes (fndecl);
  	bitmap_obstack_initialize (NULL);
  	if (!gimple_in_ssa_p (DECL_STRUCT_FUNCTION (fndecl)) && optimize)
! 	  execute_pass_list (pass_early_local_passes.pass.sub);
  	bitmap_obstack_release (NULL);
  	tree_rest_of_compilation (fndecl);
  	pop_cfun ();
Index: postreload-gcse.c
===================================================================
*** postreload-gcse.c	(revision 133313)
--- postreload-gcse.c	(working copy)
*************** rest_of_handle_gcse2 (void)
*** 1318,1325 ****
    return 0;
  }
  
! struct tree_opt_pass pass_gcse2 =
  {
    "gcse2",                              /* name */
    gate_handle_gcse2,                    /* gate */
    rest_of_handle_gcse2,                 /* execute */
--- 1318,1327 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_gcse2 =
  {
+  {
+   RTL_PASS,
    "gcse2",                              /* name */
    gate_handle_gcse2,                    /* gate */
    rest_of_handle_gcse2,                 /* execute */
*************** struct tree_opt_pass pass_gcse2 =
*** 1332,1338 ****
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_dump_func | TODO_verify_rtl_sharing
!   | TODO_verify_flow | TODO_ggc_collect,/* todo_flags_finish */
!   'J'                                   /* letter */
  };
  
--- 1334,1340 ----
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_dump_func | TODO_verify_rtl_sharing
!   | TODO_verify_flow | TODO_ggc_collect /* todo_flags_finish */
!  }
  };
  
Index: postreload.c
===================================================================
*** postreload.c	(revision 133313)
--- postreload.c	(working copy)
*************** rest_of_handle_postreload (void)
*** 1585,1592 ****
    return 0;
  }
  
! struct tree_opt_pass pass_postreload_cse =
  {
    "postreload",                         /* name */
    gate_handle_postreload,               /* gate */
    rest_of_handle_postreload,            /* execute */
--- 1585,1594 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_postreload_cse =
  {
+  {
+   RTL_PASS,
    "postreload",                         /* name */
    gate_handle_postreload,               /* gate */
    rest_of_handle_postreload,            /* execute */
*************** struct tree_opt_pass pass_postreload_cse
*** 1599,1605 ****
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_df_finish | TODO_verify_rtl_sharing |
!   TODO_dump_func,                       /* todo_flags_finish */
!   'o'                                   /* letter */
  };
  
--- 1601,1607 ----
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_df_finish | TODO_verify_rtl_sharing |
!   TODO_dump_func                        /* todo_flags_finish */
!  }
  };
  
Index: tree-ssa-loop-ch.c
===================================================================
*** tree-ssa-loop-ch.c	(revision 133313)
--- tree-ssa-loop-ch.c	(working copy)
*************** gate_ch (void)
*** 253,260 ****
    return flag_tree_ch != 0;
  }
  
! struct tree_opt_pass pass_ch = 
  {
    "ch",					/* name */
    gate_ch,				/* gate */
    copy_loop_headers,			/* execute */
--- 253,262 ----
    return flag_tree_ch != 0;
  }
  
! struct gimple_opt_pass pass_ch = 
  {
+  {
+   GIMPLE_PASS,
    "ch",					/* name */
    gate_ch,				/* gate */
    copy_loop_headers,			/* execute */
*************** struct tree_opt_pass pass_ch = 
*** 267,272 ****
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
    TODO_cleanup_cfg | TODO_dump_func 
!   | TODO_verify_ssa,			/* todo_flags_finish */
!   0					/* letter */
  };
--- 269,274 ----
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
    TODO_cleanup_cfg | TODO_dump_func 
!   | TODO_verify_ssa			/* todo_flags_finish */
!  }
  };
Index: tree-tailcall.c
===================================================================
*** tree-tailcall.c	(revision 133313)
--- tree-tailcall.c	(working copy)
*************** execute_tail_calls (void)
*** 1017,1024 ****
    return tree_optimize_tail_calls_1 (true);
  }
  
! struct tree_opt_pass pass_tail_recursion = 
  {
    "tailr",				/* name */
    gate_tail_calls,			/* gate */
    execute_tail_recursion,		/* execute */
--- 1017,1026 ----
    return tree_optimize_tail_calls_1 (true);
  }
  
! struct gimple_opt_pass pass_tail_recursion = 
  {
+  {
+   GIMPLE_PASS,
    "tailr",				/* name */
    gate_tail_calls,			/* gate */
    execute_tail_recursion,		/* execute */
*************** struct tree_opt_pass pass_tail_recursion
*** 1030,1041 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func | TODO_verify_ssa,	/* todo_flags_finish */
!   0					/* letter */
  };
  
! struct tree_opt_pass pass_tail_calls = 
  {
    "tailc",				/* name */
    gate_tail_calls,			/* gate */
    execute_tail_calls,			/* execute */
--- 1032,1045 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func | TODO_verify_ssa	/* todo_flags_finish */
!  }
  };
  
! struct gimple_opt_pass pass_tail_calls = 
  {
+  {
+   GIMPLE_PASS,
    "tailc",				/* name */
    gate_tail_calls,			/* gate */
    execute_tail_calls,			/* execute */
*************** struct tree_opt_pass pass_tail_calls = 
*** 1047,1052 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func | TODO_verify_ssa,	/* todo_flags_finish */
!   0					/* letter */
  };
--- 1051,1056 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func | TODO_verify_ssa	/* todo_flags_finish */
!  }
  };
Index: tree-pass.h
===================================================================
*** tree-pass.h	(revision 133313)
--- tree-pass.h	(working copy)
*************** extern const char *dump_file_name;
*** 88,96 ****
  /* Return the dump_file_info for the given phase.  */
  extern struct dump_file_info *get_dump_file_info (enum tree_dump_index);
  
! /* Describe one pass.  */
! struct tree_opt_pass
  {
    /* Terse name of the pass used as a fragment of the dump file name.  */
    const char *name;
  
--- 88,103 ----
  /* Return the dump_file_info for the given phase.  */
  extern struct dump_file_info *get_dump_file_info (enum tree_dump_index);
  
! /* Describe one pass; this is the common part shared across different pass
!    types.  */
! struct opt_pass
  {
+   /* Optimization pass type.  */
+   enum opt_pass_type {
+     GIMPLE_PASS,
+     RTL_PASS,
+     SIMPLE_IPA_PASS
+   } type;
    /* Terse name of the pass used as a fragment of the dump file name.  */
    const char *name;
  
*************** struct tree_opt_pass
*** 104,113 ****
    unsigned int (*execute) (void);
  
    /* A list of sub-passes to run, dependent on gate predicate.  */
!   struct tree_opt_pass *sub;
  
    /* Next in the list of passes to run, independent of gate predicate.  */
!   struct tree_opt_pass *next;
  
    /* Static pass number, used as a fragment of the dump file name.  */
    int static_pass_number;
--- 111,120 ----
    unsigned int (*execute) (void);
  
    /* A list of sub-passes to run, dependent on gate predicate.  */
!   struct opt_pass *sub;
  
    /* Next in the list of passes to run, independent of gate predicate.  */
!   struct opt_pass *next;
  
    /* Static pass number, used as a fragment of the dump file name.  */
    int static_pass_number;
*************** struct tree_opt_pass
*** 124,132 ****
    /* Flags indicating common sets things to do before and after.  */
    unsigned int todo_flags_start;
    unsigned int todo_flags_finish;
  
!   /* Letter for RTL dumps.  */
!   char letter;
  };
  
  /* Define a tree dump switch.  */
--- 131,155 ----
    /* Flags indicating common sets things to do before and after.  */
    unsigned int todo_flags_start;
    unsigned int todo_flags_finish;
+ };
+ 
+ /* Description or GIMPLE pass.  */
+ struct gimple_opt_pass
+ {
+   struct opt_pass pass;
+ };
  
! /* Decription of RTL pass.  */
! struct rtl_opt_pass
! {
!   struct opt_pass pass;
! };
! 
! /* Description if simple IPA pass.  Simple IPA passes have just one execute
!    hook.  */
! struct simple_ipa_opt_pass
! {
!   struct opt_pass pass;
  };
  
  /* Define a tree dump switch.  */
*************** struct dump_file_info
*** 240,461 ****
  
  extern void tree_lowering_passes (tree decl);
  
! extern struct tree_opt_pass pass_mudflap_1;
! extern struct tree_opt_pass pass_mudflap_2;
! extern struct tree_opt_pass pass_remove_useless_stmts;
! extern struct tree_opt_pass pass_lower_cf;
! extern struct tree_opt_pass pass_refactor_eh;
! extern struct tree_opt_pass pass_lower_eh;
! extern struct tree_opt_pass pass_build_cfg;
! extern struct tree_opt_pass pass_tree_profile;
! extern struct tree_opt_pass pass_early_tree_profile;
! extern struct tree_opt_pass pass_cleanup_cfg;
! extern struct tree_opt_pass pass_referenced_vars;
! extern struct tree_opt_pass pass_sra;
! extern struct tree_opt_pass pass_sra_early;
! extern struct tree_opt_pass pass_tail_recursion;
! extern struct tree_opt_pass pass_tail_calls;
! extern struct tree_opt_pass pass_tree_loop;
! extern struct tree_opt_pass pass_tree_loop_init;
! extern struct tree_opt_pass pass_lim;
! extern struct tree_opt_pass pass_tree_unswitch;
! extern struct tree_opt_pass pass_predcom;
! extern struct tree_opt_pass pass_iv_canon;
! extern struct tree_opt_pass pass_scev_cprop;
! extern struct tree_opt_pass pass_empty_loop;
! extern struct tree_opt_pass pass_record_bounds;
! extern struct tree_opt_pass pass_if_conversion;
! extern struct tree_opt_pass pass_loop_distribution;
! extern struct tree_opt_pass pass_vectorize;
! extern struct tree_opt_pass pass_complete_unroll;
! extern struct tree_opt_pass pass_parallelize_loops;
! extern struct tree_opt_pass pass_loop_prefetch;
! extern struct tree_opt_pass pass_iv_optimize;
! extern struct tree_opt_pass pass_tree_loop_done;
! extern struct tree_opt_pass pass_ch;
! extern struct tree_opt_pass pass_ccp;
! extern struct tree_opt_pass pass_phi_only_cprop;
! extern struct tree_opt_pass pass_build_ssa;
! extern struct tree_opt_pass pass_del_ssa;
! extern struct tree_opt_pass pass_build_alias;
! extern struct tree_opt_pass pass_dominator;
! 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_split_crit_edges;
! extern struct tree_opt_pass pass_pre;
! extern struct tree_opt_pass pass_profile;
! extern struct tree_opt_pass pass_lower_complex_O0;
! extern struct tree_opt_pass pass_lower_complex;
! extern struct tree_opt_pass pass_lower_vector;
! extern struct tree_opt_pass pass_lower_vector_ssa;
! extern struct tree_opt_pass pass_lower_omp;
! extern struct tree_opt_pass pass_expand_omp;
! extern struct tree_opt_pass pass_expand_omp_ssa;
! extern struct tree_opt_pass pass_object_sizes;
! extern struct tree_opt_pass pass_fold_builtins;
! extern struct tree_opt_pass pass_stdarg;
! extern struct tree_opt_pass pass_early_warn_uninitialized;
! extern struct tree_opt_pass pass_late_warn_uninitialized;
! extern struct tree_opt_pass pass_cse_reciprocals;
! extern struct tree_opt_pass pass_cse_sincos;
! extern struct tree_opt_pass pass_convert_to_rsqrt;
! extern struct tree_opt_pass pass_warn_function_return;
! extern struct tree_opt_pass pass_warn_function_noreturn;
! extern struct tree_opt_pass pass_cselim;
! extern struct tree_opt_pass pass_phiopt;
! extern struct tree_opt_pass pass_forwprop;
! extern struct tree_opt_pass pass_phiprop;
! extern struct tree_opt_pass pass_tree_ifcombine;
! extern struct tree_opt_pass pass_dse;
! extern struct tree_opt_pass pass_simple_dse;
! extern struct tree_opt_pass pass_nrv;
! extern struct tree_opt_pass pass_mark_used_blocks;
! extern struct tree_opt_pass pass_rename_ssa_copies;
! extern struct tree_opt_pass pass_expand;
! extern struct tree_opt_pass pass_rest_of_compilation;
! extern struct tree_opt_pass pass_sink_code;
! extern struct tree_opt_pass pass_fre;
! extern struct tree_opt_pass pass_linear_transform;
! extern struct tree_opt_pass pass_check_data_deps;
! extern struct tree_opt_pass pass_copy_prop;
! extern struct tree_opt_pass pass_store_ccp;
! extern struct tree_opt_pass pass_vrp;
! extern struct tree_opt_pass pass_create_structure_vars;
! extern struct tree_opt_pass pass_uncprop;
! extern struct tree_opt_pass pass_return_slot;
! extern struct tree_opt_pass pass_reassoc;
! extern struct tree_opt_pass pass_rebuild_cgraph_edges;
! extern struct tree_opt_pass pass_build_cgraph_edges;
! extern struct tree_opt_pass pass_reset_cc_flags;
  
  /* IPA Passes */
! extern struct tree_opt_pass pass_ipa_matrix_reorg;
! extern struct tree_opt_pass pass_ipa_cp;
! extern struct tree_opt_pass pass_ipa_inline;
! extern struct tree_opt_pass pass_ipa_early_inline;
! extern struct tree_opt_pass pass_ipa_reference;
! extern struct tree_opt_pass pass_ipa_pure_const;
! extern struct tree_opt_pass pass_ipa_type_escape;
! extern struct tree_opt_pass pass_ipa_pta;
! extern struct tree_opt_pass pass_ipa_struct_reorg;
! extern struct tree_opt_pass pass_early_local_passes;
! extern struct tree_opt_pass pass_ipa_increase_alignment;
! extern struct tree_opt_pass pass_ipa_function_and_variable_visibility;
! 
! extern struct tree_opt_pass pass_all_optimizations;
! extern struct tree_opt_pass pass_cleanup_cfg_post_optimizing;
! extern struct tree_opt_pass pass_free_cfg_annotations;
! extern struct tree_opt_pass pass_free_datastructures;
! extern struct tree_opt_pass pass_init_datastructures;
! extern struct tree_opt_pass pass_fixup_cfg;
! 
! extern struct tree_opt_pass pass_init_function;
! extern struct tree_opt_pass pass_jump;
! extern struct tree_opt_pass pass_rtl_eh;
! extern struct tree_opt_pass pass_initial_value_sets;
! extern struct tree_opt_pass pass_unshare_all_rtl;
! extern struct tree_opt_pass pass_instantiate_virtual_regs;
! extern struct tree_opt_pass pass_rtl_fwprop;
! extern struct tree_opt_pass pass_rtl_fwprop_addr;
! extern struct tree_opt_pass pass_jump2;
! extern struct tree_opt_pass pass_lower_subreg;
! extern struct tree_opt_pass pass_cse;
! extern struct tree_opt_pass pass_fast_rtl_dce;
! extern struct tree_opt_pass pass_ud_rtl_dce;
! extern struct tree_opt_pass pass_rtl_dce;
! extern struct tree_opt_pass pass_rtl_dse1;
! extern struct tree_opt_pass pass_rtl_dse2;
! extern struct tree_opt_pass pass_rtl_dse3;
! extern struct tree_opt_pass pass_gcse;
! extern struct tree_opt_pass pass_jump_bypass;
! extern struct tree_opt_pass pass_profiling;
! extern struct tree_opt_pass pass_rtl_ifcvt;
! extern struct tree_opt_pass pass_tracer;
! 
! extern struct tree_opt_pass pass_into_cfg_layout_mode;
! extern struct tree_opt_pass pass_outof_cfg_layout_mode;
! 
! extern struct tree_opt_pass pass_loop2;
! extern struct tree_opt_pass pass_rtl_loop_init;
! extern struct tree_opt_pass pass_rtl_move_loop_invariants;
! extern struct tree_opt_pass pass_rtl_unswitch;
! extern struct tree_opt_pass pass_rtl_unroll_and_peel_loops;
! extern struct tree_opt_pass pass_rtl_doloop;
! extern struct tree_opt_pass pass_rtl_loop_done;
! 
! extern struct tree_opt_pass pass_web;
! extern struct tree_opt_pass pass_cse2;
! extern struct tree_opt_pass pass_df_initialize_opt;
! extern struct tree_opt_pass pass_df_initialize_no_opt;
! extern struct tree_opt_pass pass_regclass_init;
! extern struct tree_opt_pass pass_subregs_of_mode_init;
! extern struct tree_opt_pass pass_subregs_of_mode_finish;
! extern struct tree_opt_pass pass_inc_dec;
! extern struct tree_opt_pass pass_stack_ptr_mod;
! extern struct tree_opt_pass pass_initialize_regs;
! extern struct tree_opt_pass pass_combine;
! extern struct tree_opt_pass pass_if_after_combine;
! extern struct tree_opt_pass pass_partition_blocks;
! extern struct tree_opt_pass pass_match_asm_constraints;
! extern struct tree_opt_pass pass_regmove;
! extern struct tree_opt_pass pass_split_all_insns;
! extern struct tree_opt_pass pass_lower_subreg2;
! extern struct tree_opt_pass pass_mode_switching;
! extern struct tree_opt_pass pass_see;
! extern struct tree_opt_pass pass_sms;
! extern struct tree_opt_pass pass_sched;
! extern struct tree_opt_pass pass_local_alloc;
! extern struct tree_opt_pass pass_global_alloc;
! extern struct tree_opt_pass pass_postreload;
! extern struct tree_opt_pass pass_clean_state;
! extern struct tree_opt_pass pass_branch_prob;
! extern struct tree_opt_pass pass_value_profile_transformations;
! extern struct tree_opt_pass pass_postreload_cse;
! extern struct tree_opt_pass pass_gcse2;
! extern struct tree_opt_pass pass_split_after_reload;
! extern struct tree_opt_pass pass_branch_target_load_optimize1;
! extern struct tree_opt_pass pass_thread_prologue_and_epilogue;
! extern struct tree_opt_pass pass_stack_adjustments;
! extern struct tree_opt_pass pass_peephole2;
! extern struct tree_opt_pass pass_if_after_reload;
! extern struct tree_opt_pass pass_regrename;
! extern struct tree_opt_pass pass_cprop_hardreg;
! extern struct tree_opt_pass pass_reorder_blocks;
! extern struct tree_opt_pass pass_branch_target_load_optimize2;
! extern struct tree_opt_pass pass_leaf_regs;
! extern struct tree_opt_pass pass_split_before_sched2;
! extern struct tree_opt_pass pass_sched2;
! extern struct tree_opt_pass pass_stack_regs;
! extern struct tree_opt_pass pass_stack_regs_run;
! extern struct tree_opt_pass pass_df_finish;
! extern struct tree_opt_pass pass_compute_alignments;
! extern struct tree_opt_pass pass_duplicate_computed_gotos;
! extern struct tree_opt_pass pass_variable_tracking;
! extern struct tree_opt_pass pass_free_cfg;
! extern struct tree_opt_pass pass_machine_reorg;
! extern struct tree_opt_pass pass_cleanup_barriers;
! extern struct tree_opt_pass pass_delay_slots;
! extern struct tree_opt_pass pass_split_for_shorten_branches;
! extern struct tree_opt_pass pass_split_before_regstack;
! extern struct tree_opt_pass pass_convert_to_eh_region_ranges;
! extern struct tree_opt_pass pass_shorten_branches;
! extern struct tree_opt_pass pass_set_nothrow_function_flags;
! extern struct tree_opt_pass pass_final;
! extern struct tree_opt_pass pass_rtl_seqabstr;
! extern struct tree_opt_pass pass_release_ssa_names;
! extern struct tree_opt_pass pass_early_inline;
! extern struct tree_opt_pass pass_inline_parameters;
! extern struct tree_opt_pass pass_apply_inline;
! extern struct tree_opt_pass pass_all_early_optimizations;
! extern struct tree_opt_pass pass_update_address_taken;
  
  /* The root of the compilation pass tree, once constructed.  */
! extern struct tree_opt_pass *all_passes, *all_ipa_passes, *all_lowering_passes;
  
! extern void execute_pass_list (struct tree_opt_pass *);
! extern void execute_ipa_pass_list (struct tree_opt_pass *);
  extern void print_current_pass (FILE *);
  extern void debug_pass (void);
  
--- 263,484 ----
  
  extern void tree_lowering_passes (tree decl);
  
! extern struct gimple_opt_pass pass_mudflap_1;
! extern struct gimple_opt_pass pass_mudflap_2;
! extern struct gimple_opt_pass pass_remove_useless_stmts;
! extern struct gimple_opt_pass pass_lower_cf;
! extern struct gimple_opt_pass pass_refactor_eh;
! extern struct gimple_opt_pass pass_lower_eh;
! extern struct gimple_opt_pass pass_build_cfg;
! extern struct gimple_opt_pass pass_tree_profile;
! extern struct gimple_opt_pass pass_early_tree_profile;
! extern struct gimple_opt_pass pass_cleanup_cfg;
! extern struct gimple_opt_pass pass_referenced_vars;
! extern struct gimple_opt_pass pass_sra;
! extern struct gimple_opt_pass pass_sra_early;
! extern struct gimple_opt_pass pass_tail_recursion;
! extern struct gimple_opt_pass pass_tail_calls;
! extern struct gimple_opt_pass pass_tree_loop;
! extern struct gimple_opt_pass pass_tree_loop_init;
! extern struct gimple_opt_pass pass_lim;
! extern struct gimple_opt_pass pass_tree_unswitch;
! extern struct gimple_opt_pass pass_predcom;
! extern struct gimple_opt_pass pass_iv_canon;
! extern struct gimple_opt_pass pass_scev_cprop;
! extern struct gimple_opt_pass pass_empty_loop;
! extern struct gimple_opt_pass pass_record_bounds;
! extern struct gimple_opt_pass pass_if_conversion;
! extern struct gimple_opt_pass pass_loop_distribution;
! extern struct gimple_opt_pass pass_vectorize;
! extern struct gimple_opt_pass pass_complete_unroll;
! extern struct gimple_opt_pass pass_parallelize_loops;
! extern struct gimple_opt_pass pass_loop_prefetch;
! extern struct gimple_opt_pass pass_iv_optimize;
! extern struct gimple_opt_pass pass_tree_loop_done;
! extern struct gimple_opt_pass pass_ch;
! extern struct gimple_opt_pass pass_ccp;
! extern struct gimple_opt_pass pass_phi_only_cprop;
! extern struct gimple_opt_pass pass_build_ssa;
! extern struct gimple_opt_pass pass_del_ssa;
! extern struct gimple_opt_pass pass_build_alias;
! extern struct gimple_opt_pass pass_dominator;
! extern struct gimple_opt_pass pass_dce;
! extern struct gimple_opt_pass pass_dce_loop;
! extern struct gimple_opt_pass pass_cd_dce;
! extern struct gimple_opt_pass pass_merge_phi;
! extern struct gimple_opt_pass pass_split_crit_edges;
! extern struct gimple_opt_pass pass_pre;
! extern struct gimple_opt_pass pass_profile;
! extern struct gimple_opt_pass pass_lower_complex_O0;
! extern struct gimple_opt_pass pass_lower_complex;
! extern struct gimple_opt_pass pass_lower_vector;
! extern struct gimple_opt_pass pass_lower_vector_ssa;
! extern struct gimple_opt_pass pass_lower_omp;
! extern struct gimple_opt_pass pass_expand_omp;
! extern struct gimple_opt_pass pass_expand_omp_ssa;
! extern struct gimple_opt_pass pass_object_sizes;
! extern struct gimple_opt_pass pass_fold_builtins;
! extern struct gimple_opt_pass pass_stdarg;
! extern struct gimple_opt_pass pass_early_warn_uninitialized;
! extern struct gimple_opt_pass pass_late_warn_uninitialized;
! extern struct gimple_opt_pass pass_cse_reciprocals;
! extern struct gimple_opt_pass pass_cse_sincos;
! extern struct gimple_opt_pass pass_convert_to_rsqrt;
! extern struct gimple_opt_pass pass_warn_function_return;
! extern struct gimple_opt_pass pass_warn_function_noreturn;
! extern struct gimple_opt_pass pass_cselim;
! extern struct gimple_opt_pass pass_phiopt;
! extern struct gimple_opt_pass pass_forwprop;
! extern struct gimple_opt_pass pass_phiprop;
! extern struct gimple_opt_pass pass_tree_ifcombine;
! extern struct gimple_opt_pass pass_dse;
! extern struct gimple_opt_pass pass_simple_dse;
! extern struct gimple_opt_pass pass_nrv;
! extern struct gimple_opt_pass pass_mark_used_blocks;
! extern struct gimple_opt_pass pass_rename_ssa_copies;
! extern struct gimple_opt_pass pass_expand;
! extern struct gimple_opt_pass pass_rest_of_compilation;
! extern struct gimple_opt_pass pass_sink_code;
! extern struct gimple_opt_pass pass_fre;
! extern struct gimple_opt_pass pass_linear_transform;
! extern struct gimple_opt_pass pass_check_data_deps;
! extern struct gimple_opt_pass pass_copy_prop;
! extern struct gimple_opt_pass pass_store_ccp;
! extern struct gimple_opt_pass pass_vrp;
! extern struct gimple_opt_pass pass_create_structure_vars;
! extern struct gimple_opt_pass pass_uncprop;
! extern struct gimple_opt_pass pass_return_slot;
! extern struct gimple_opt_pass pass_reassoc;
! extern struct gimple_opt_pass pass_rebuild_cgraph_edges;
! extern struct gimple_opt_pass pass_build_cgraph_edges;
! extern struct gimple_opt_pass pass_reset_cc_flags;
  
  /* IPA Passes */
! extern struct simple_ipa_opt_pass pass_ipa_matrix_reorg;
! extern struct simple_ipa_opt_pass pass_ipa_cp;
! extern struct simple_ipa_opt_pass pass_ipa_inline;
! extern struct simple_ipa_opt_pass pass_ipa_early_inline;
! extern struct simple_ipa_opt_pass pass_ipa_reference;
! extern struct simple_ipa_opt_pass pass_ipa_pure_const;
! extern struct simple_ipa_opt_pass pass_ipa_type_escape;
! extern struct simple_ipa_opt_pass pass_ipa_pta;
! extern struct simple_ipa_opt_pass pass_ipa_struct_reorg;
! extern struct simple_ipa_opt_pass pass_early_local_passes;
! extern struct simple_ipa_opt_pass pass_ipa_increase_alignment;
! extern struct simple_ipa_opt_pass pass_ipa_function_and_variable_visibility;
! 
! extern struct gimple_opt_pass pass_all_optimizations;
! extern struct gimple_opt_pass pass_cleanup_cfg_post_optimizing;
! extern struct gimple_opt_pass pass_free_cfg_annotations;
! extern struct gimple_opt_pass pass_free_datastructures;
! extern struct gimple_opt_pass pass_init_datastructures;
! extern struct gimple_opt_pass pass_fixup_cfg;
! 
! extern struct rtl_opt_pass pass_init_function;
! extern struct rtl_opt_pass pass_jump;
! extern struct rtl_opt_pass pass_rtl_eh;
! extern struct rtl_opt_pass pass_initial_value_sets;
! extern struct rtl_opt_pass pass_unshare_all_rtl;
! extern struct rtl_opt_pass pass_instantiate_virtual_regs;
! extern struct rtl_opt_pass pass_rtl_fwprop;
! extern struct rtl_opt_pass pass_rtl_fwprop_addr;
! extern struct rtl_opt_pass pass_jump2;
! extern struct rtl_opt_pass pass_lower_subreg;
! extern struct rtl_opt_pass pass_cse;
! extern struct rtl_opt_pass pass_fast_rtl_dce;
! extern struct rtl_opt_pass pass_ud_rtl_dce;
! extern struct rtl_opt_pass pass_rtl_dce;
! extern struct rtl_opt_pass pass_rtl_dse1;
! extern struct rtl_opt_pass pass_rtl_dse2;
! extern struct rtl_opt_pass pass_rtl_dse3;
! extern struct rtl_opt_pass pass_gcse;
! extern struct rtl_opt_pass pass_jump_bypass;
! extern struct rtl_opt_pass pass_profiling;
! extern struct rtl_opt_pass pass_rtl_ifcvt;
! extern struct gimple_opt_pass pass_tracer;
! 
! extern struct rtl_opt_pass pass_into_cfg_layout_mode;
! extern struct rtl_opt_pass pass_outof_cfg_layout_mode;
! 
! extern struct rtl_opt_pass pass_loop2;
! extern struct rtl_opt_pass pass_rtl_loop_init;
! extern struct rtl_opt_pass pass_rtl_move_loop_invariants;
! extern struct rtl_opt_pass pass_rtl_unswitch;
! extern struct rtl_opt_pass pass_rtl_unroll_and_peel_loops;
! extern struct rtl_opt_pass pass_rtl_doloop;
! extern struct rtl_opt_pass pass_rtl_loop_done;
! 
! extern struct rtl_opt_pass pass_web;
! extern struct rtl_opt_pass pass_cse2;
! extern struct rtl_opt_pass pass_df_initialize_opt;
! extern struct rtl_opt_pass pass_df_initialize_no_opt;
! extern struct rtl_opt_pass pass_regclass_init;
! extern struct rtl_opt_pass pass_subregs_of_mode_init;
! extern struct rtl_opt_pass pass_subregs_of_mode_finish;
! extern struct rtl_opt_pass pass_inc_dec;
! extern struct rtl_opt_pass pass_stack_ptr_mod;
! extern struct rtl_opt_pass pass_initialize_regs;
! extern struct rtl_opt_pass pass_combine;
! extern struct rtl_opt_pass pass_if_after_combine;
! extern struct rtl_opt_pass pass_partition_blocks;
! extern struct rtl_opt_pass pass_match_asm_constraints;
! extern struct rtl_opt_pass pass_regmove;
! extern struct rtl_opt_pass pass_split_all_insns;
! extern struct rtl_opt_pass pass_lower_subreg2;
! extern struct rtl_opt_pass pass_mode_switching;
! extern struct rtl_opt_pass pass_see;
! extern struct rtl_opt_pass pass_sms;
! extern struct rtl_opt_pass pass_sched;
! extern struct rtl_opt_pass pass_local_alloc;
! extern struct rtl_opt_pass pass_global_alloc;
! extern struct rtl_opt_pass pass_postreload;
! extern struct rtl_opt_pass pass_clean_state;
! extern struct rtl_opt_pass pass_branch_prob;
! extern struct rtl_opt_pass pass_value_profile_transformations;
! extern struct rtl_opt_pass pass_postreload_cse;
! extern struct rtl_opt_pass pass_gcse2;
! extern struct rtl_opt_pass pass_split_after_reload;
! extern struct rtl_opt_pass pass_branch_target_load_optimize1;
! extern struct rtl_opt_pass pass_thread_prologue_and_epilogue;
! extern struct rtl_opt_pass pass_stack_adjustments;
! extern struct rtl_opt_pass pass_peephole2;
! extern struct rtl_opt_pass pass_if_after_reload;
! extern struct rtl_opt_pass pass_regrename;
! extern struct rtl_opt_pass pass_cprop_hardreg;
! extern struct rtl_opt_pass pass_reorder_blocks;
! extern struct rtl_opt_pass pass_branch_target_load_optimize2;
! extern struct rtl_opt_pass pass_leaf_regs;
! extern struct rtl_opt_pass pass_split_before_sched2;
! extern struct rtl_opt_pass pass_sched2;
! extern struct rtl_opt_pass pass_stack_regs;
! extern struct rtl_opt_pass pass_stack_regs_run;
! extern struct rtl_opt_pass pass_df_finish;
! extern struct rtl_opt_pass pass_compute_alignments;
! extern struct rtl_opt_pass pass_duplicate_computed_gotos;
! extern struct rtl_opt_pass pass_variable_tracking;
! extern struct rtl_opt_pass pass_free_cfg;
! extern struct rtl_opt_pass pass_machine_reorg;
! extern struct rtl_opt_pass pass_cleanup_barriers;
! extern struct rtl_opt_pass pass_delay_slots;
! extern struct rtl_opt_pass pass_split_for_shorten_branches;
! extern struct rtl_opt_pass pass_split_before_regstack;
! extern struct rtl_opt_pass pass_convert_to_eh_region_ranges;
! extern struct rtl_opt_pass pass_shorten_branches;
! extern struct rtl_opt_pass pass_set_nothrow_function_flags;
! extern struct rtl_opt_pass pass_final;
! extern struct rtl_opt_pass pass_rtl_seqabstr;
! extern struct gimple_opt_pass pass_release_ssa_names;
! extern struct gimple_opt_pass pass_early_inline;
! extern struct gimple_opt_pass pass_inline_parameters;
! extern struct gimple_opt_pass pass_apply_inline;
! extern struct gimple_opt_pass pass_all_early_optimizations;
! extern struct gimple_opt_pass pass_update_address_taken;
  
  /* The root of the compilation pass tree, once constructed.  */
! extern struct opt_pass *all_passes, *all_ipa_passes, *all_lowering_passes;
  
! extern void execute_pass_list (struct opt_pass *);
! extern void execute_ipa_pass_list (struct opt_pass *);
  extern void print_current_pass (FILE *);
  extern void debug_pass (void);
  
Index: ipa-cp.c
===================================================================
*** ipa-cp.c	(revision 133313)
--- ipa-cp.c	(working copy)
*************** cgraph_gate_cp (void)
*** 1136,1142 ****
    return flag_ipa_cp;
  }
  
! struct tree_opt_pass pass_ipa_cp = {
    "cp",				/* name */
    cgraph_gate_cp,		/* gate */
    ipcp_driver,			/* execute */
--- 1136,1145 ----
    return flag_ipa_cp;
  }
  
! struct simple_ipa_opt_pass pass_ipa_cp = 
! {
!  {
!   SIMPLE_IPA_PASS,
    "cp",				/* name */
    cgraph_gate_cp,		/* gate */
    ipcp_driver,			/* execute */
*************** struct tree_opt_pass pass_ipa_cp = {
*** 1148,1153 ****
    PROP_trees,			/* properties_provided */
    0,				/* properties_destroyed */
    0,				/* todo_flags_start */
!   TODO_dump_cgraph | TODO_dump_func,	/* todo_flags_finish */
!   0				/* letter */
  };
--- 1151,1156 ----
    PROP_trees,			/* properties_provided */
    0,				/* properties_destroyed */
    0,				/* todo_flags_start */
!   TODO_dump_cgraph | TODO_dump_func	/* todo_flags_finish */
!  }
  };
Index: final.c
===================================================================
*** final.c	(revision 133313)
--- final.c	(working copy)
*************** compute_alignments (void)
*** 794,801 ****
    return 0;
  }
  
! struct tree_opt_pass pass_compute_alignments =
  {
    "alignments",                         /* name */
    NULL,                                 /* gate */
    compute_alignments,                   /* execute */
--- 794,803 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_compute_alignments =
  {
+  {
+   RTL_PASS,
    "alignments",                         /* name */
    NULL,                                 /* gate */
    compute_alignments,                   /* execute */
*************** struct tree_opt_pass pass_compute_alignm
*** 808,815 ****
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_dump_func | TODO_verify_rtl_sharing
!   | TODO_ggc_collect,                   /* todo_flags_finish */
!   0                                     /* letter */
  };
  
  \f
--- 810,817 ----
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_dump_func | TODO_verify_rtl_sharing
!   | TODO_ggc_collect                    /* todo_flags_finish */
!  }
  };
  
  \f
*************** rest_of_handle_final (void)
*** 4169,4176 ****
    return 0;
  }
  
! struct tree_opt_pass pass_final =
  {
    NULL,                                 /* name */
    NULL,                                 /* gate */
    rest_of_handle_final,                 /* execute */
--- 4171,4180 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_final =
  {
+  {
+   RTL_PASS,
    NULL,                                 /* name */
    NULL,                                 /* gate */
    rest_of_handle_final,                 /* execute */
*************** struct tree_opt_pass pass_final =
*** 4182,4189 ****
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   TODO_ggc_collect,                     /* todo_flags_finish */
!   0                                     /* letter */
  };
  
  
--- 4186,4193 ----
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   TODO_ggc_collect                      /* todo_flags_finish */
!  }
  };
  
  
*************** rest_of_handle_shorten_branches (void)
*** 4195,4202 ****
    return 0;
  }
  
! struct tree_opt_pass pass_shorten_branches =
  {
    "shorten",                            /* name */
    NULL,                                 /* gate */
    rest_of_handle_shorten_branches,      /* execute */
--- 4199,4208 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_shorten_branches =
  {
+  {
+   RTL_PASS,
    "shorten",                            /* name */
    NULL,                                 /* gate */
    rest_of_handle_shorten_branches,      /* execute */
*************** struct tree_opt_pass pass_shorten_branch
*** 4208,4215 ****
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   TODO_dump_func,                       /* todo_flags_finish */
!   0                                     /* letter */
  };
  
  
--- 4214,4221 ----
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   TODO_dump_func                        /* todo_flags_finish */
!  }
  };
  
  
*************** rest_of_clean_state (void)
*** 4277,4284 ****
    return 0;
  }
  
! struct tree_opt_pass pass_clean_state =
  {
    NULL,                                 /* name */
    NULL,                                 /* gate */
    rest_of_clean_state,                  /* execute */
--- 4283,4292 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_clean_state =
  {
+  {
+   RTL_PASS,
    NULL,                                 /* name */
    NULL,                                 /* gate */
    rest_of_clean_state,                  /* execute */
*************** struct tree_opt_pass pass_clean_state =
*** 4290,4296 ****
    0,                                    /* properties_provided */
    PROP_rtl,                             /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   0,                                    /* todo_flags_finish */
!   0                                     /* letter */
  };
  
--- 4298,4304 ----
    0,                                    /* properties_provided */
    PROP_rtl,                             /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   0                                     /* todo_flags_finish */
!  }
  };
  
Index: omp-low.c
===================================================================
*** omp-low.c	(revision 133313)
--- omp-low.c	(working copy)
*************** gate_expand_omp_ssa (void)
*** 4195,4202 ****
    return flag_openmp_ssa && flag_openmp != 0 && errorcount == 0;
  }
  
! struct tree_opt_pass pass_expand_omp_ssa = 
  {
    "ompexpssa",				/* name */
    gate_expand_omp_ssa,			/* gate */
    execute_expand_omp,			/* execute */
--- 4195,4204 ----
    return flag_openmp_ssa && flag_openmp != 0 && errorcount == 0;
  }
  
! struct gimple_opt_pass pass_expand_omp_ssa = 
  {
+  {
+   GIMPLE_PASS,
    "ompexpssa",				/* name */
    gate_expand_omp_ssa,			/* gate */
    execute_expand_omp,			/* execute */
*************** struct tree_opt_pass pass_expand_omp_ssa
*** 4208,4215 ****
    PROP_gimple_lomp,			/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func,			/* todo_flags_finish */
!   0					/* letter */
  };
  
  /* OMP expansion -- the default pass, run before creation of SSA form.  */
--- 4210,4217 ----
    PROP_gimple_lomp,			/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func			/* todo_flags_finish */
!  }
  };
  
  /* OMP expansion -- the default pass, run before creation of SSA form.  */
*************** gate_expand_omp (void)
*** 4221,4228 ****
  	  && flag_openmp != 0 && errorcount == 0);
  }
  
! struct tree_opt_pass pass_expand_omp = 
  {
    "ompexp",				/* name */
    gate_expand_omp,			/* gate */
    execute_expand_omp,			/* execute */
--- 4223,4232 ----
  	  && flag_openmp != 0 && errorcount == 0);
  }
  
! struct gimple_opt_pass pass_expand_omp = 
  {
+  {
+   GIMPLE_PASS,
    "ompexp",				/* name */
    gate_expand_omp,			/* gate */
    execute_expand_omp,			/* execute */
*************** struct tree_opt_pass pass_expand_omp = 
*** 4234,4241 ****
    PROP_gimple_lomp,			/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func,			/* todo_flags_finish */
!   0					/* letter */
  };
  \f
  /* Routines to lower OpenMP directives into OMP-GIMPLE.  */
--- 4238,4245 ----
    PROP_gimple_lomp,			/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func			/* todo_flags_finish */
!  }
  };
  \f
  /* Routines to lower OpenMP directives into OMP-GIMPLE.  */
*************** gate_lower_omp (void)
*** 5081,5088 ****
    return flag_openmp != 0;
  }
  
! struct tree_opt_pass pass_lower_omp = 
  {
    "omplower",				/* name */
    gate_lower_omp,			/* gate */
    execute_lower_omp,			/* execute */
--- 5085,5094 ----
    return flag_openmp != 0;
  }
  
! struct gimple_opt_pass pass_lower_omp = 
  {
+  {
+   GIMPLE_PASS,
    "omplower",				/* name */
    gate_lower_omp,			/* gate */
    execute_lower_omp,			/* execute */
*************** struct tree_opt_pass pass_lower_omp = 
*** 5094,5101 ****
    PROP_gimple_lomp,			/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func,			/* todo_flags_finish */
!   0					/* letter */
  };
  \f
  /* The following is a utility to diagnose OpenMP structured block violations.
--- 5100,5107 ----
    PROP_gimple_lomp,			/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func			/* todo_flags_finish */
!  }
  };
  \f
  /* The following is a utility to diagnose OpenMP structured block violations.
Index: tree-ssa-dse.c
===================================================================
*** tree-ssa-dse.c	(revision 133313)
--- tree-ssa-dse.c	(working copy)
*************** gate_dse (void)
*** 632,638 ****
    return flag_tree_dse != 0;
  }
  
! struct tree_opt_pass pass_dse = {
    "dse",			/* name */
    gate_dse,			/* gate */
    tree_ssa_dse,			/* execute */
--- 632,641 ----
    return flag_tree_dse != 0;
  }
  
! struct gimple_opt_pass pass_dse = 
! {
!  {
!   GIMPLE_PASS,
    "dse",			/* name */
    gate_dse,			/* gate */
    tree_ssa_dse,			/* execute */
*************** struct tree_opt_pass pass_dse = {
*** 648,655 ****
    0,				/* todo_flags_start */
    TODO_dump_func
      | TODO_ggc_collect
!     | TODO_verify_ssa,		/* todo_flags_finish */
!   0				/* letter */
  };
  
  /* A very simple dead store pass eliminating write only local variables.
--- 651,658 ----
    0,				/* todo_flags_start */
    TODO_dump_func
      | TODO_ggc_collect
!     | TODO_verify_ssa		/* todo_flags_finish */
!  }
  };
  
  /* A very simple dead store pass eliminating write only local variables.
*************** execute_simple_dse (void)
*** 769,776 ****
    return todo;
  }
  
! struct tree_opt_pass pass_simple_dse =
  {
    "sdse",				/* name */
    NULL,					/* gate */
    execute_simple_dse,			/* execute */
--- 772,781 ----
    return todo;
  }
  
! struct gimple_opt_pass pass_simple_dse =
  {
+  {
+   GIMPLE_PASS,
    "sdse",				/* name */
    NULL,					/* gate */
    execute_simple_dse,			/* execute */
*************** struct tree_opt_pass pass_simple_dse =
*** 782,787 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func,          	        /* todo_flags_finish */
!   0				        /* letter */
  };
--- 787,792 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func          	        /* todo_flags_finish */
!  }
  };
Index: ipa-reference.c
===================================================================
*** ipa-reference.c	(revision 133313)
--- ipa-reference.c	(working copy)
*************** gate_reference (void)
*** 1319,1326 ****
  	  && !(errorcount || sorrycount));
  }
  
! struct tree_opt_pass pass_ipa_reference =
  {
    "static-var",				/* name */
    gate_reference,			/* gate */
    static_execute,			/* execute */
--- 1319,1328 ----
  	  && !(errorcount || sorrycount));
  }
  
! struct simple_ipa_opt_pass pass_ipa_reference =
  {
+  {
+   SIMPLE_IPA_PASS,
    "static-var",				/* name */
    gate_reference,			/* gate */
    static_execute,			/* execute */
*************** struct tree_opt_pass pass_ipa_reference 
*** 1332,1339 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   0,                                    /* todo_flags_finish */
!   0					/* letter */
  };
  
  #include "gt-ipa-reference.h"
--- 1334,1341 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   0                                     /* todo_flags_finish */
!  }
  };
  
  #include "gt-ipa-reference.h"
Index: tree-ssa-uncprop.c
===================================================================
*** tree-ssa-uncprop.c	(revision 133313)
--- tree-ssa-uncprop.c	(working copy)
*************** gate_uncprop (void)
*** 606,613 ****
    return flag_tree_dom != 0;
  }
  
! struct tree_opt_pass pass_uncprop = 
  {
    "uncprop",				/* name */
    gate_uncprop,				/* gate */
    tree_ssa_uncprop,			/* execute */
--- 606,615 ----
    return flag_tree_dom != 0;
  }
  
! struct gimple_opt_pass pass_uncprop = 
  {
+  {
+   GIMPLE_PASS,
    "uncprop",				/* name */
    gate_uncprop,				/* gate */
    tree_ssa_uncprop,			/* execute */
*************** struct tree_opt_pass pass_uncprop = 
*** 619,624 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func | TODO_verify_ssa,	/* todo_flags_finish */
!   0					/* letter */
  };
--- 621,626 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func | TODO_verify_ssa	/* todo_flags_finish */
!  }
  };
Index: auto-inc-dec.c
===================================================================
*** auto-inc-dec.c	(revision 133313)
--- auto-inc-dec.c	(working copy)
*************** gate_auto_inc_dec (void)
*** 1540,1547 ****
  }
  
  
! struct tree_opt_pass pass_inc_dec =
  {
    "auto-inc-dec",                       /* name */
    gate_auto_inc_dec,                    /* gate */
    rest_of_handle_auto_inc_dec,          /* execute */
--- 1540,1549 ----
  }
  
  
! struct rtl_opt_pass pass_inc_dec =
  {
+  {
+   RTL_PASS,
    "auto-inc-dec",                       /* name */
    gate_auto_inc_dec,                    /* gate */
    rest_of_handle_auto_inc_dec,          /* execute */
*************** struct tree_opt_pass pass_inc_dec =
*** 1555,1560 ****
    0,                                    /* todo_flags_start */
    TODO_dump_func | 
    TODO_df_finish,                       /* todo_flags_finish */
!   0                                     /* letter */
  };
  
--- 1557,1562 ----
    0,                                    /* todo_flags_start */
    TODO_dump_func | 
    TODO_df_finish,                       /* todo_flags_finish */
!  }
  };
  
Index: reorg.c
===================================================================
*** reorg.c	(revision 133313)
--- reorg.c	(working copy)
*************** rest_of_handle_delay_slots (void)
*** 4066,4073 ****
    return 0;
  }
  
! struct tree_opt_pass pass_delay_slots =
  {
    "dbr",                                /* name */
    gate_handle_delay_slots,              /* gate */
    rest_of_handle_delay_slots,           /* execute */
--- 4066,4075 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_delay_slots =
  {
+  {
+   RTL_PASS,
    "dbr",                                /* name */
    gate_handle_delay_slots,              /* gate */
    rest_of_handle_delay_slots,           /* execute */
*************** struct tree_opt_pass pass_delay_slots =
*** 4080,4087 ****
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_dump_func |
!   TODO_ggc_collect,                     /* todo_flags_finish */
!   'd'                                   /* letter */
  };
  
  /* Machine dependent reorg pass.  */
--- 4082,4089 ----
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_dump_func |
!   TODO_ggc_collect                      /* todo_flags_finish */
!  }
  };
  
  /* Machine dependent reorg pass.  */
*************** rest_of_handle_machine_reorg (void)
*** 4099,4106 ****
    return 0;
  }
  
! struct tree_opt_pass pass_machine_reorg =
  {
    "mach",                               /* name */
    gate_handle_machine_reorg,            /* gate */
    rest_of_handle_machine_reorg,         /* execute */
--- 4101,4110 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_machine_reorg =
  {
+  {
+   RTL_PASS,
    "mach",                               /* name */
    gate_handle_machine_reorg,            /* gate */
    rest_of_handle_machine_reorg,         /* execute */
*************** struct tree_opt_pass pass_machine_reorg 
*** 4113,4118 ****
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_dump_func |
!   TODO_ggc_collect,                     /* todo_flags_finish */
!   'M'                                   /* letter */
  };
--- 4117,4122 ----
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_dump_func |
!   TODO_ggc_collect                      /* todo_flags_finish */
!  }
  };
Index: cgraphunit.c
===================================================================
*** cgraphunit.c	(revision 133313)
--- cgraphunit.c	(working copy)
*************** cgraph_process_new_functions (void)
*** 475,481 ****
  	      /* When not optimizing, be sure we run early local passes anyway
  		 to expand OMP.  */
  	      || !optimize)
! 	    execute_pass_list (pass_early_local_passes.sub);
  	  free_dominance_info (CDI_POST_DOMINATORS);
  	  free_dominance_info (CDI_DOMINATORS);
  	  pop_cfun ();
--- 475,481 ----
  	      /* When not optimizing, be sure we run early local passes anyway
  		 to expand OMP.  */
  	      || !optimize)
! 	    execute_pass_list (pass_early_local_passes.pass.sub);
  	  free_dominance_info (CDI_POST_DOMINATORS);
  	  free_dominance_info (CDI_DOMINATORS);
  	  pop_cfun ();
*************** cgraph_analyze_function (struct cgraph_n
*** 858,864 ****
      {
        bitmap_obstack_initialize (NULL);
        tree_register_cfg_hooks ();
!       execute_pass_list (pass_early_local_passes.sub);
        free_dominance_info (CDI_POST_DOMINATORS);
        free_dominance_info (CDI_DOMINATORS);
        bitmap_obstack_release (NULL);
--- 858,864 ----
      {
        bitmap_obstack_initialize (NULL);
        tree_register_cfg_hooks ();
!       execute_pass_list (pass_early_local_passes.pass.sub);
        free_dominance_info (CDI_POST_DOMINATORS);
        free_dominance_info (CDI_DOMINATORS);
        bitmap_obstack_release (NULL);
Index: testsuite/gcc.dg/20050811-2.c
===================================================================
*** testsuite/gcc.dg/20050811-2.c	(revision 133313)
--- testsuite/gcc.dg/20050811-2.c	(working copy)
***************
*** 1,6 ****
  /* Test whether -dov doesn't crash.  */
  /* { dg-do compile } */
! /* { dg-options "-O2 -dov" } */
  
  int foo (void)
  {
--- 1,6 ----
  /* Test whether -dov doesn't crash.  */
  /* { dg-do compile } */
! /* { dg-options "-O2 -dv -fdump-rtl-postreload" } */
  
  int foo (void)
  {
Index: testsuite/gcc.dg/sms-2.c
===================================================================
*** testsuite/gcc.dg/sms-2.c	(revision 133313)
--- testsuite/gcc.dg/sms-2.c	(working copy)
***************
*** 2,8 ****
     traversal of the loops after versioning.  */
  
  /* { dg-do compile } */
! /* { dg-options "-O2 -fmodulo-sched -dm" } */
  
  
  void
--- 2,8 ----
     traversal of the loops after versioning.  */
  
  /* { dg-do compile } */
! /* { dg-options "-O2 -fmodulo-sched -fdump-rtl-sms" } */
  
  
  void
Index: testsuite/gcc.dg/var-expand1.c
===================================================================
*** testsuite/gcc.dg/var-expand1.c	(revision 133313)
--- testsuite/gcc.dg/var-expand1.c	(working copy)
***************
*** 2,8 ****
  /* We don't (and don't want to) perform this optimisation on soft-float
     targets, where each addition is a library call.  */
  /* { dg-require-effective-target hard_float } */
! /* { dg-options "-O2 -funroll-loops --fast-math -fvariable-expansion-in-unroller -dL" } */
  
  extern void abort (void);
  
--- 2,8 ----
  /* We don't (and don't want to) perform this optimisation on soft-float
     targets, where each addition is a library call.  */
  /* { dg-require-effective-target hard_float } */
! /* { dg-options "-O2 -funroll-loops --fast-math -fvariable-expansion-in-unroller -fdump-rtl-loop2" } */
  
  extern void abort (void);
  
Index: testsuite/gcc.dg/var-expand3.c
===================================================================
*** testsuite/gcc.dg/var-expand3.c	(revision 133313)
--- testsuite/gcc.dg/var-expand3.c	(working copy)
***************
*** 1,5 ****
  /* { dg-do run { target { powerpc*-*-* && powerpc_altivec_ok } } }} */
! /* { dg-options "-O2 -funroll-loops -ffast-math -fvariable-expansion-in-unroller -maltivec -dL" } */
  
  #include "altivec.h"
  extern void abort (void);
--- 1,5 ----
  /* { dg-do run { target { powerpc*-*-* && powerpc_altivec_ok } } }} */
! /* { dg-options "-O2 -funroll-loops -ffast-math -fvariable-expansion-in-unroller -maltivec -fdump-rtl-loop2" } */
  
  #include "altivec.h"
  extern void abort (void);
Index: testsuite/gcc.dg/pr30957-1.c
===================================================================
*** testsuite/gcc.dg/pr30957-1.c	(revision 133313)
--- testsuite/gcc.dg/pr30957-1.c	(working copy)
***************
*** 6,12 ****
     they can not co-exist; also under -funsafe-math-optimizations, so we
     expect it to fail.  */
  /* { dg-require-effective-target hard_float } */
! /* { dg-options "-O2 -funroll-loops -funsafe-math-optimizations -fvariable-expansion-in-unroller -dL" } */
  
  extern void abort (void);
  extern void exit (int);
--- 6,12 ----
     they can not co-exist; also under -funsafe-math-optimizations, so we
     expect it to fail.  */
  /* { dg-require-effective-target hard_float } */
! /* { dg-options "-O2 -funroll-loops -funsafe-math-optimizations -fvariable-expansion-in-unroller -fdump-rtl-loop2" } */
  
  extern void abort (void);
  extern void exit (int);
Index: testsuite/gcc.dg/cpp/cmdlne-dD-dM.c
===================================================================
*** testsuite/gcc.dg/cpp/cmdlne-dD-dM.c	(revision 133313)
--- testsuite/gcc.dg/cpp/cmdlne-dD-dM.c	(working copy)
***************
*** 1,10 ****
  /* Copyright (C) 2002, 2003 Free Software Foundation, Inc.  */
  
  /* { dg-do preprocess } */
! /* { dg-options "-dD -dM" } */
  
! /* Test -dD -dM does not fail.  It should give the same output
!    as plain -dM.  */
  
  #define foo bar
  #define funlike(like) fun like
--- 1,10 ----
  /* Copyright (C) 2002, 2003 Free Software Foundation, Inc.  */
  
  /* { dg-do preprocess } */
! /* { dg-options "-dD -fdump-rtl-mach" } */
  
! /* Test -dD -fdump-rtl-mach does not fail.  It should give the same output
!    as plain -fdump-rtl-mach.  */
  
  #define foo bar
  #define funlike(like) fun like
Index: testsuite/gcc.dg/cpp/cmdlne-dM-dD.c
===================================================================
*** testsuite/gcc.dg/cpp/cmdlne-dM-dD.c	(revision 133313)
--- testsuite/gcc.dg/cpp/cmdlne-dM-dD.c	(working copy)
***************
*** 1,9 ****
  /* Copyright (C) 2002, 2003 Free Software Foundation, Inc.  */
  
  /* { dg-do preprocess } */
! /* { dg-options "-dM -dD" } */
  
! /* Test -dM -dD does not fail.  It should give the same output
     as plain -dD.  */
  
  #define foo bar
--- 1,9 ----
  /* Copyright (C) 2002, 2003 Free Software Foundation, Inc.  */
  
  /* { dg-do preprocess } */
! /* { dg-options "-fdump-rtl-mach -dD" } */
  
! /* Test -fdump-rtl-mach -dD does not fail.  It should give the same output
     as plain -dD.  */
  
  #define foo bar
Index: testsuite/gcc.dg/20050811-1.c
===================================================================
*** testsuite/gcc.dg/20050811-1.c	(revision 133313)
--- testsuite/gcc.dg/20050811-1.c	(working copy)
***************
*** 1,6 ****
! /* Test whether -dav doesn't crash.  */
  /* { dg-do compile } */
! /* { dg-options "-O2 -dav" } */
  
  int foo (void)
  {
--- 1,6 ----
! /* Test whether -dv -fdump-rtl-all doesn't crash.  */
  /* { dg-do compile } */
! /* { dg-options "-O2 -dv -fdump-rtl-all" } */
  
  int foo (void)
  {
Index: tree-ssa-copyrename.c
===================================================================
*** tree-ssa-copyrename.c	(revision 133313)
--- tree-ssa-copyrename.c	(working copy)
*************** gate_copyrename (void)
*** 389,396 ****
    return flag_tree_copyrename != 0;
  }
  
! struct tree_opt_pass pass_rename_ssa_copies = 
! {  
    "copyrename",				/* name */
    gate_copyrename,			/* gate */
    rename_ssa_copies,			/* execute */
--- 389,398 ----
    return flag_tree_copyrename != 0;
  }
  
! struct gimple_opt_pass pass_rename_ssa_copies = 
! {
!  {
!   GIMPLE_PASS,
    "copyrename",				/* name */
    gate_copyrename,			/* gate */
    rename_ssa_copies,			/* execute */
*************** struct tree_opt_pass pass_rename_ssa_cop
*** 402,408 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */ 
!   TODO_dump_func | TODO_verify_ssa,     /* todo_flags_finish */
!   0					/* letter */
  }; 
  
--- 404,410 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */ 
!   TODO_dump_func | TODO_verify_ssa      /* todo_flags_finish */
!  }
  }; 
  
Index: tree-ssa-ccp.c
===================================================================
*** tree-ssa-ccp.c	(revision 133313)
--- tree-ssa-ccp.c	(working copy)
*************** gate_ccp (void)
*** 1495,1502 ****
  }
  
  
! struct tree_opt_pass pass_ccp = 
  {
    "ccp",				/* name */
    gate_ccp,				/* gate */
    do_ssa_ccp,				/* execute */
--- 1495,1504 ----
  }
  
  
! struct gimple_opt_pass pass_ccp = 
  {
+  {
+   GIMPLE_PASS,
    "ccp",				/* name */
    gate_ccp,				/* gate */
    do_ssa_ccp,				/* execute */
*************** struct tree_opt_pass pass_ccp = 
*** 1509,1516 ****
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
    TODO_dump_func | TODO_verify_ssa
!   | TODO_verify_stmts | TODO_ggc_collect,/* todo_flags_finish */
!   0					/* letter */
  };
  
  
--- 1511,1518 ----
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
    TODO_dump_func | TODO_verify_ssa
!   | TODO_verify_stmts | TODO_ggc_collect/* todo_flags_finish */
!  }
  };
  
  
*************** gate_store_ccp (void)
*** 1531,1538 ****
  }
  
  
! struct tree_opt_pass pass_store_ccp = 
  {
    "store_ccp",				/* name */
    gate_store_ccp,			/* gate */
    do_ssa_store_ccp,			/* execute */
--- 1533,1542 ----
  }
  
  
! struct gimple_opt_pass pass_store_ccp = 
  {
+  {
+   GIMPLE_PASS,
    "store_ccp",				/* name */
    gate_store_ccp,			/* gate */
    do_ssa_store_ccp,			/* execute */
*************** struct tree_opt_pass pass_store_ccp = 
*** 1545,1552 ****
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
    TODO_dump_func | TODO_verify_ssa
!   | TODO_verify_stmts | TODO_ggc_collect,/* todo_flags_finish */
!   0					/* letter */
  };
  
  /* Given a constant value VAL for bitfield FIELD, and a destination
--- 1549,1556 ----
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
    TODO_dump_func | TODO_verify_ssa
!   | TODO_verify_stmts | TODO_ggc_collect/* todo_flags_finish */
!  }
  };
  
  /* Given a constant value VAL for bitfield FIELD, and a destination
*************** execute_fold_all_builtins (void)
*** 3026,3033 ****
  }
  
  
! struct tree_opt_pass pass_fold_builtins = 
  {
    "fab",				/* name */
    NULL,					/* gate */
    execute_fold_all_builtins,		/* execute */
--- 3030,3039 ----
  }
  
  
! struct gimple_opt_pass pass_fold_builtins = 
  {
+  {
+   GIMPLE_PASS,
    "fab",				/* name */
    NULL,					/* gate */
    execute_fold_all_builtins,		/* execute */
*************** struct tree_opt_pass pass_fold_builtins 
*** 3041,3046 ****
    0,					/* todo_flags_start */
    TODO_dump_func
      | TODO_verify_ssa
!     | TODO_update_ssa,			/* todo_flags_finish */
!   0					/* letter */
  };
--- 3047,3052 ----
    0,					/* todo_flags_start */
    TODO_dump_func
      | TODO_verify_ssa
!     | TODO_update_ssa			/* todo_flags_finish */
!  }
  };
Index: df-core.c
===================================================================
*** df-core.c	(revision 133313)
--- df-core.c	(working copy)
*************** gate_opt (void)
*** 753,760 ****
  }
  
  
! struct tree_opt_pass pass_df_initialize_opt =
  {
    "dfinit",                             /* name */
    gate_opt,                             /* gate */
    rest_of_handle_df_initialize,         /* execute */
--- 753,762 ----
  }
  
  
! struct rtl_opt_pass pass_df_initialize_opt =
  {
+  {
+   RTL_PASS,
    "dfinit",                             /* name */
    gate_opt,                             /* gate */
    rest_of_handle_df_initialize,         /* execute */
*************** struct tree_opt_pass pass_df_initialize_
*** 766,773 ****
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   0,                                    /* todo_flags_finish */
!   'z'                                   /* letter */
  };
  
  
--- 768,775 ----
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   0                                     /* todo_flags_finish */
!  }
  };
  
  
*************** gate_no_opt (void)
*** 778,785 ****
  }
  
  
! struct tree_opt_pass pass_df_initialize_no_opt =
  {
    "dfinit",                             /* name */
    gate_no_opt,                          /* gate */
    rest_of_handle_df_initialize,         /* execute */
--- 780,789 ----
  }
  
  
! struct rtl_opt_pass pass_df_initialize_no_opt =
  {
+  {
+   RTL_PASS,
    "dfinit",                             /* name */
    gate_no_opt,                          /* gate */
    rest_of_handle_df_initialize,         /* execute */
*************** struct tree_opt_pass pass_df_initialize_
*** 791,798 ****
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   0,                                    /* todo_flags_finish */
!   'z'                                   /* letter */
  };
  
  
--- 795,802 ----
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   0                                     /* todo_flags_finish */
!  }
  };
  
  
*************** rest_of_handle_df_finish (void)
*** 825,832 ****
  }
  
  
! struct tree_opt_pass pass_df_finish =
  {
    "dfinish",                            /* name */
    NULL,					/* gate */
    rest_of_handle_df_finish,             /* execute */
--- 829,838 ----
  }
  
  
! struct rtl_opt_pass pass_df_finish =
  {
+  {
+   RTL_PASS,
    "dfinish",                            /* name */
    NULL,					/* gate */
    rest_of_handle_df_finish,             /* execute */
*************** struct tree_opt_pass pass_df_finish =
*** 838,845 ****
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   0,                                    /* todo_flags_finish */
!   'z'                                   /* letter */
  };
  
  
--- 844,851 ----
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   0                                     /* todo_flags_finish */
!  }
  };
  
  
Index: mode-switching.c
===================================================================
*** mode-switching.c	(revision 133313)
--- mode-switching.c	(working copy)
*************** rest_of_handle_mode_switching (void)
*** 756,763 ****
  }
  
  
! struct tree_opt_pass pass_mode_switching =
  {
    "mode-sw",                            /* name */
    gate_mode_switching,                  /* gate */
    rest_of_handle_mode_switching,        /* execute */
--- 756,765 ----
  }
  
  
! struct rtl_opt_pass pass_mode_switching =
  {
+  {
+   RTL_PASS,
    "mode-sw",                            /* name */
    gate_mode_switching,                  /* gate */
    rest_of_handle_mode_switching,        /* execute */
*************** struct tree_opt_pass pass_mode_switching
*** 770,775 ****
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_df_finish | TODO_verify_rtl_sharing |
!   TODO_dump_func,                       /* todo_flags_finish */
!   0                                     /* letter */
  };
--- 772,777 ----
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_df_finish | TODO_verify_rtl_sharing |
!   TODO_dump_func                        /* todo_flags_finish */
!  }
  };
Index: tree-nomudflap.c
===================================================================
*** tree-nomudflap.c	(revision 133313)
--- tree-nomudflap.c	(working copy)
*************** gate_mudflap (void)
*** 90,97 ****
    return flag_mudflap != 0;
  }
  
! struct tree_opt_pass pass_mudflap_1 = 
  {
    "mudflap1",				/* name */
    gate_mudflap,                         /* gate */
    NULL,					/* execute */
--- 90,99 ----
    return flag_mudflap != 0;
  }
  
! struct gimple_opt_pass pass_mudflap_1 = 
  {
+  {
+   GIMPLE_PASS,
    "mudflap1",				/* name */
    gate_mudflap,                         /* gate */
    NULL,					/* execute */
*************** struct tree_opt_pass pass_mudflap_1 = 
*** 103,114 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   0,                                    /* todo_flags_finish */
!   0				        /* letter */
  };
  
! struct tree_opt_pass pass_mudflap_2 = 
  {
    "mudflap2",				/* name */
    gate_mudflap,                         /* gate */
    NULL,					/* execute */
--- 105,118 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   0                                     /* todo_flags_finish */
!  }
  };
  
! struct gimple_opt_pass pass_mudflap_2 = 
  {
+  {
+   GIMPLE_PASS,
    "mudflap2",				/* name */
    gate_mudflap,                         /* gate */
    NULL,					/* execute */
*************** struct tree_opt_pass pass_mudflap_2 = 
*** 120,127 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   0,                                    /* todo_flags_finish */
!   0				        /* letter */
  };
  
  /* Instead of:
--- 124,131 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   0                                     /* todo_flags_finish */
!  }
  };
  
  /* Instead of:
Index: modulo-sched.c
===================================================================
*** modulo-sched.c	(revision 133313)
--- modulo-sched.c	(working copy)
*************** rest_of_handle_sms (void)
*** 2871,2878 ****
    return 0;
  }
  
! struct tree_opt_pass pass_sms =
  {
    "sms",                                /* name */
    gate_handle_sms,                      /* gate */
    rest_of_handle_sms,                   /* execute */
--- 2871,2880 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_sms =
  {
+  {
+   RTL_PASS,
    "sms",                                /* name */
    gate_handle_sms,                      /* gate */
    rest_of_handle_sms,                   /* execute */
*************** struct tree_opt_pass pass_sms =
*** 2886,2892 ****
    TODO_dump_func,                       /* todo_flags_start */
    TODO_df_finish | TODO_verify_rtl_sharing |
    TODO_dump_func |
!   TODO_ggc_collect,                     /* todo_flags_finish */
!   'm'                                   /* letter */
  };
  
--- 2888,2894 ----
    TODO_dump_func,                       /* todo_flags_start */
    TODO_df_finish | TODO_verify_rtl_sharing |
    TODO_dump_func |
!   TODO_ggc_collect                      /* todo_flags_finish */
!  }
  };
  
Index: ipa-pure-const.c
===================================================================
*** ipa-pure-const.c	(revision 133313)
--- ipa-pure-const.c	(working copy)
*************** gate_pure_const (void)
*** 769,776 ****
  	  && !(errorcount || sorrycount));
  }
  
! struct tree_opt_pass pass_ipa_pure_const =
  {
    "pure-const",		                /* name */
    gate_pure_const,			/* gate */
    static_execute,			/* execute */
--- 769,778 ----
  	  && !(errorcount || sorrycount));
  }
  
! struct simple_ipa_opt_pass pass_ipa_pure_const =
  {
+  {
+   SIMPLE_IPA_PASS,
    "pure-const",		                /* name */
    gate_pure_const,			/* gate */
    static_execute,			/* execute */
*************** struct tree_opt_pass pass_ipa_pure_const
*** 782,789 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   0,                                    /* todo_flags_finish */
!   0					/* letter */
  };
  
  
--- 784,791 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   0                                     /* todo_flags_finish */
!  }
  };
  
  
Index: cse.c
===================================================================
*** cse.c	(revision 133313)
--- cse.c	(working copy)
*************** rest_of_handle_cse (void)
*** 7011,7018 ****
    return 0;
  }
  
! struct tree_opt_pass pass_cse =
  {
    "cse1",                               /* name */
    gate_handle_cse,                      /* gate */   
    rest_of_handle_cse,			/* execute */       
--- 7011,7020 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_cse =
  {
+  {
+   RTL_PASS,
    "cse1",                               /* name */
    gate_handle_cse,                      /* gate */   
    rest_of_handle_cse,			/* execute */       
*************** struct tree_opt_pass pass_cse =
*** 7028,7034 ****
    TODO_dump_func |
    TODO_ggc_collect |
    TODO_verify_flow,                     /* todo_flags_finish */
!   's'                                   /* letter */
  };
  
  
--- 7030,7036 ----
    TODO_dump_func |
    TODO_ggc_collect |
    TODO_verify_flow,                     /* todo_flags_finish */
!  }
  };
  
  
*************** rest_of_handle_cse2 (void)
*** 7072,7079 ****
  }
  
  
! struct tree_opt_pass pass_cse2 =
  {
    "cse2",                               /* name */
    gate_handle_cse2,                     /* gate */   
    rest_of_handle_cse2,			/* execute */       
--- 7074,7083 ----
  }
  
  
! struct rtl_opt_pass pass_cse2 =
  {
+  {
+   RTL_PASS,
    "cse2",                               /* name */
    gate_handle_cse2,                     /* gate */   
    rest_of_handle_cse2,			/* execute */       
*************** struct tree_opt_pass pass_cse2 =
*** 7088,7094 ****
    TODO_df_finish | TODO_verify_rtl_sharing |
    TODO_dump_func |
    TODO_ggc_collect |
!   TODO_verify_flow,                     /* todo_flags_finish */
!   't'                                   /* letter */
  };
  
--- 7092,7098 ----
    TODO_df_finish | TODO_verify_rtl_sharing |
    TODO_dump_func |
    TODO_ggc_collect |
!   TODO_verify_flow                      /* todo_flags_finish */
!  }
  };
  
Index: web.c
===================================================================
*** web.c	(revision 133313)
--- web.c	(working copy)
*************** web_main (void)
*** 371,378 ****
    return 0;
  }
  \f
! struct tree_opt_pass pass_web =
  {
    "web",                                /* name */
    gate_handle_web,                      /* gate */
    web_main,		                /* execute */
--- 371,380 ----
    return 0;
  }
  \f
! struct rtl_opt_pass pass_web =
  {
+  {
+   RTL_PASS,
    "web",                                /* name */
    gate_handle_web,                      /* gate */
    web_main,		                /* execute */
*************** struct tree_opt_pass pass_web =
*** 385,391 ****
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_df_finish | TODO_verify_rtl_sharing | 
!   TODO_dump_func,                       /* todo_flags_finish */
!   'Z'                                   /* letter */
  };
  
--- 387,393 ----
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_df_finish | TODO_verify_rtl_sharing | 
!   TODO_dump_func                        /* todo_flags_finish */
!  }
  };
  
Index: tree-stdarg.c
===================================================================
*** tree-stdarg.c	(revision 133313)
--- tree-stdarg.c	(working copy)
*************** finish:
*** 904,911 ****
  }
  
  
! struct tree_opt_pass pass_stdarg =
  {
    "stdarg",				/* name */
    gate_optimize_stdarg,			/* gate */
    execute_optimize_stdarg,		/* execute */
--- 904,913 ----
  }
  
  
! struct gimple_opt_pass pass_stdarg =
  {
+  {
+   GIMPLE_PASS,
    "stdarg",				/* name */
    gate_optimize_stdarg,			/* gate */
    execute_optimize_stdarg,		/* execute */
*************** struct tree_opt_pass pass_stdarg =
*** 917,922 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func,			/* todo_flags_finish */
!   0					/* letter */
  };
--- 919,924 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func			/* todo_flags_finish */
!  }
  };
Index: tree-ssa-math-opts.c
===================================================================
*** tree-ssa-math-opts.c	(revision 133313)
--- tree-ssa-math-opts.c	(working copy)
*************** execute_cse_reciprocals (void)
*** 555,562 ****
    return 0;
  }
  
! struct tree_opt_pass pass_cse_reciprocals =
  {
    "recip",				/* name */
    gate_cse_reciprocals,			/* gate */
    execute_cse_reciprocals,		/* execute */
--- 555,564 ----
    return 0;
  }
  
! struct gimple_opt_pass pass_cse_reciprocals =
  {
+  {
+   GIMPLE_PASS,
    "recip",				/* name */
    gate_cse_reciprocals,			/* gate */
    execute_cse_reciprocals,		/* execute */
*************** struct tree_opt_pass pass_cse_reciprocal
*** 569,576 ****
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
    TODO_dump_func | TODO_update_ssa | TODO_verify_ssa
!     | TODO_verify_stmts,                /* todo_flags_finish */
!   0				        /* letter */
  };
  
  /* Records an occurrence at statement USE_STMT in the vector of trees
--- 571,578 ----
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
    TODO_dump_func | TODO_update_ssa | TODO_verify_ssa
!     | TODO_verify_stmts                /* todo_flags_finish */
!  }
  };
  
  /* Records an occurrence at statement USE_STMT in the vector of trees
*************** gate_cse_sincos (void)
*** 761,768 ****
  	 && optimize;
  }
  
! struct tree_opt_pass pass_cse_sincos =
  {
    "sincos",				/* name */
    gate_cse_sincos,			/* gate */
    execute_cse_sincos,			/* execute */
--- 763,772 ----
  	 && optimize;
  }
  
! struct gimple_opt_pass pass_cse_sincos =
  {
+  {
+   GIMPLE_PASS,
    "sincos",				/* name */
    gate_cse_sincos,			/* gate */
    execute_cse_sincos,			/* execute */
*************** struct tree_opt_pass pass_cse_sincos =
*** 775,782 ****
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
    TODO_dump_func | TODO_update_ssa | TODO_verify_ssa
!     | TODO_verify_stmts,                /* todo_flags_finish */
!   0				        /* letter */
  };
  
  /* Find all expressions in the form of sqrt(a/b) and
--- 779,786 ----
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
    TODO_dump_func | TODO_update_ssa | TODO_verify_ssa
!     | TODO_verify_stmts                 /* todo_flags_finish */
!  }
  };
  
  /* Find all expressions in the form of sqrt(a/b) and
*************** gate_convert_to_rsqrt (void)
*** 853,860 ****
    return flag_unsafe_math_optimizations && optimize;
  }
  
! struct tree_opt_pass pass_convert_to_rsqrt =
  {
    "rsqrt",				/* name */
    gate_convert_to_rsqrt,		/* gate */
    execute_convert_to_rsqrt,		/* execute */
--- 857,866 ----
    return flag_unsafe_math_optimizations && optimize;
  }
  
! struct gimple_opt_pass pass_convert_to_rsqrt =
  {
+  {
+   GIMPLE_PASS,
    "rsqrt",				/* name */
    gate_convert_to_rsqrt,		/* gate */
    execute_convert_to_rsqrt,		/* execute */
*************** struct tree_opt_pass pass_convert_to_rsq
*** 867,872 ****
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
    TODO_dump_func | TODO_update_ssa | TODO_verify_ssa
!     | TODO_verify_stmts,                /* todo_flags_finish */
!   0				        /* letter */
  };
--- 873,878 ----
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
    TODO_dump_func | TODO_update_ssa | TODO_verify_ssa
!     | TODO_verify_stmts                 /* todo_flags_finish */
!  }
  };
Index: tree-ssa-dom.c
===================================================================
*** tree-ssa-dom.c	(revision 133313)
--- tree-ssa-dom.c	(working copy)
*************** gate_dominator (void)
*** 367,374 ****
    return flag_tree_dom != 0;
  }
  
! struct tree_opt_pass pass_dominator = 
  {
    "dom",				/* name */
    gate_dominator,			/* gate */
    tree_ssa_dominator_optimize,		/* execute */
--- 367,376 ----
    return flag_tree_dom != 0;
  }
  
! struct gimple_opt_pass pass_dominator = 
  {
+  {
+   GIMPLE_PASS,
    "dom",				/* name */
    gate_dominator,			/* gate */
    tree_ssa_dominator_optimize,		/* execute */
*************** struct tree_opt_pass pass_dominator = 
*** 383,390 ****
    TODO_dump_func
      | TODO_update_ssa
      | TODO_cleanup_cfg
!     | TODO_verify_ssa,			/* todo_flags_finish */
!   0					/* letter */
  };
  
  
--- 385,392 ----
    TODO_dump_func
      | TODO_update_ssa
      | TODO_cleanup_cfg
!     | TODO_verify_ssa			/* todo_flags_finish */
!  }
  };
  
  
*************** eliminate_degenerate_phis (void)
*** 2533,2540 ****
    return 0;
  }
  
! struct tree_opt_pass pass_phi_only_cprop =
  {
    "phicprop",                           /* name */
    gate_dominator,                       /* gate */
    eliminate_degenerate_phis,            /* execute */
--- 2535,2544 ----
    return 0;
  }
  
! struct gimple_opt_pass pass_phi_only_cprop =
  {
+  {
+   GIMPLE_PASS,
    "phicprop",                           /* name */
    gate_dominator,                       /* gate */
    eliminate_degenerate_phis,            /* execute */
*************** struct tree_opt_pass pass_phi_only_cprop
*** 2551,2556 ****
      | TODO_ggc_collect
      | TODO_verify_ssa
      | TODO_verify_stmts
!     | TODO_update_ssa,			/* todo_flags_finish */
!   0                                     /* letter */
  };
--- 2555,2560 ----
      | TODO_ggc_collect
      | TODO_verify_ssa
      | TODO_verify_stmts
!     | TODO_update_ssa			/* todo_flags_finish */
!  }
  };
Index: tree-nrv.c
===================================================================
*** tree-nrv.c	(revision 133313)
--- tree-nrv.c	(working copy)
*************** tree_nrv (void)
*** 221,228 ****
    return 0;
  }
  
! struct tree_opt_pass pass_nrv = 
  {
    "nrv",				/* name */
    NULL,					/* gate */
    tree_nrv,				/* execute */
--- 221,230 ----
    return 0;
  }
  
! struct gimple_opt_pass pass_nrv = 
  {
+  {
+   GIMPLE_PASS,
    "nrv",				/* name */
    NULL,					/* gate */
    tree_nrv,				/* execute */
*************** struct tree_opt_pass pass_nrv = 
*** 234,241 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func | TODO_ggc_collect,			/* todo_flags_finish */
!   0					/* letter */
  };
  
  /* Determine (pessimistically) whether DEST is available for NRV
--- 236,243 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func | TODO_ggc_collect			/* todo_flags_finish */
!  }
  };
  
  /* Determine (pessimistically) whether DEST is available for NRV
*************** execute_return_slot_opt (void)
*** 312,319 ****
    return 0;
  }
  
! struct tree_opt_pass pass_return_slot = 
  {
    "retslot",				/* name */
    NULL,					/* gate */
    execute_return_slot_opt,		/* execute */
--- 314,323 ----
    return 0;
  }
  
! struct gimple_opt_pass pass_return_slot = 
  {
+  {
+   GIMPLE_PASS,
    "retslot",				/* name */
    NULL,					/* gate */
    execute_return_slot_opt,		/* execute */
*************** struct tree_opt_pass pass_return_slot = 
*** 325,330 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   0,					/* todo_flags_finish */
!   0					/* letter */
  };
--- 329,334 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   0					/* todo_flags_finish */
!  }
  };
Index: tree-ssa-alias.c
===================================================================
*** tree-ssa-alias.c	(revision 133313)
--- tree-ssa-alias.c	(working copy)
*************** gate_structure_vars (void)
*** 4205,4212 ****
    return flag_tree_salias != 0;
  }
  
! struct tree_opt_pass pass_create_structure_vars = 
  {
    "salias",		 /* name */
    gate_structure_vars,	 /* gate */
    create_structure_vars, /* execute */
--- 4205,4214 ----
    return flag_tree_salias != 0;
  }
  
! struct gimple_opt_pass pass_create_structure_vars = 
  {
+  {
+   GIMPLE_PASS,
    "salias",		 /* name */
    gate_structure_vars,	 /* gate */
    create_structure_vars, /* execute */
*************** struct tree_opt_pass pass_create_structu
*** 4218,4225 ****
    0,			 /* properties_provided */
    0,			 /* properties_destroyed */
    0,			 /* todo_flags_start */
!   TODO_dump_func,	 /* todo_flags_finish */
!   0			 /* letter */
  };
  
  /* Reset the call_clobbered flags on our referenced vars.  In
--- 4220,4227 ----
    0,			 /* properties_provided */
    0,			 /* properties_destroyed */
    0,			 /* todo_flags_start */
!   TODO_dump_func	 /* todo_flags_finish */
!  }
  };
  
  /* Reset the call_clobbered flags on our referenced vars.  In
*************** reset_cc_flags (void)
*** 4236,4243 ****
    return 0;
  }
  
! struct tree_opt_pass pass_reset_cc_flags =
  {
    NULL,		 /* name */
    NULL,  	 /* gate */
    reset_cc_flags, /* execute */
--- 4238,4247 ----
    return 0;
  }
  
! struct gimple_opt_pass pass_reset_cc_flags =
  {
+  {
+   GIMPLE_PASS,
    NULL,		 /* name */
    NULL,  	 /* gate */
    reset_cc_flags, /* execute */
*************** struct tree_opt_pass pass_reset_cc_flags
*** 4249,4256 ****
    0,			 /* properties_provided */
    0,			 /* properties_destroyed */
    0,			 /* todo_flags_start */
!   0,         	         /* todo_flags_finish */
!   0			 /* letter */
  };
  
  static bool
--- 4253,4260 ----
    0,			 /* properties_provided */
    0,			 /* properties_destroyed */
    0,			 /* todo_flags_start */
!   0         	         /* todo_flags_finish */
!  }
  };
  
  static bool
*************** gate_build_alias (void)
*** 4260,4267 ****
  }
  
  
! struct tree_opt_pass pass_build_alias =
  {
    "build_alias",            /* name */
    gate_build_alias,         /* gate */
    NULL,                     /* execute */
--- 4264,4273 ----
  }
  
  
! struct gimple_opt_pass pass_build_alias =
  {
+  {
+   GIMPLE_PASS,
    "build_alias",            /* name */
    gate_build_alias,         /* gate */
    NULL,                     /* execute */
*************** struct tree_opt_pass pass_build_alias =
*** 4273,4278 ****
    PROP_alias,               /* properties_provided */
    0,                        /* properties_destroyed */
    0,                        /* todo_flags_start */
!   TODO_rebuild_alias,        /* todo_flags_finish */
!   0                         /* letter */
  };
--- 4279,4284 ----
    PROP_alias,               /* properties_provided */
    0,                        /* properties_destroyed */
    0,                        /* todo_flags_start */
!   TODO_rebuild_alias        /* todo_flags_finish */
!  }
  };
Index: loop-init.c
===================================================================
*** loop-init.c	(revision 133313)
--- loop-init.c	(working copy)
*************** gate_handle_loop2 (void)
*** 140,147 ****
  	      ));
  }
  
! struct tree_opt_pass pass_loop2 =
  {
    "loop2",                              /* name */
    gate_handle_loop2, 		        /* gate */
    NULL,                                 /* execute */
--- 140,149 ----
  	      ));
  }
  
! struct rtl_opt_pass pass_loop2 =
  {
+  {
+   RTL_PASS,
    "loop2",                              /* name */
    gate_handle_loop2, 		        /* gate */
    NULL,                                 /* execute */
*************** struct tree_opt_pass pass_loop2 =
*** 154,161 ****
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_dump_func |
!   TODO_ggc_collect,                     /* todo_flags_finish */
!   'L'                                   /* letter */
  };
  
  \f
--- 156,163 ----
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_dump_func |
!   TODO_ggc_collect                      /* todo_flags_finish */
!  }
  };
  
  \f
*************** rtl_loop_init (void)
*** 172,179 ****
    return 0;
  }
  
! struct tree_opt_pass pass_rtl_loop_init =
  {
    "loop2_init",                           /* name */
    NULL,                                 /* gate */
    rtl_loop_init,                        /* execute */
--- 174,183 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_rtl_loop_init =
  {
+  {
+   RTL_PASS,
    "loop2_init",                           /* name */
    NULL,                                 /* gate */
    rtl_loop_init,                        /* execute */
*************** struct tree_opt_pass pass_rtl_loop_init 
*** 185,192 ****
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   TODO_dump_func | TODO_verify_rtl_sharing, /* todo_flags_finish */
!   'L'                                   /* letter */
  };
  
  \f
--- 189,196 ----
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   TODO_dump_func | TODO_verify_rtl_sharing /* todo_flags_finish */
!  }
  };
  
  \f
*************** rtl_loop_done (void)
*** 205,212 ****
    return 0;
  }
  
! struct tree_opt_pass pass_rtl_loop_done =
  {
    "loop2_done",                          /* name */
    NULL,                                 /* gate */
    rtl_loop_done,                        /* execute */
--- 209,218 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_rtl_loop_done =
  {
+  {
+   RTL_PASS,
    "loop2_done",                          /* name */
    NULL,                                 /* gate */
    rtl_loop_done,                        /* execute */
*************** struct tree_opt_pass pass_rtl_loop_done 
*** 218,225 ****
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   TODO_dump_func | TODO_verify_rtl_sharing, /* todo_flags_finish */
!   'L'                                   /* letter */
  };
  
  \f
--- 224,231 ----
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   TODO_dump_func | TODO_verify_rtl_sharing /* todo_flags_finish */
!  }
  };
  
  \f
*************** rtl_move_loop_invariants (void)
*** 238,245 ****
    return 0;
  }
  
! struct tree_opt_pass pass_rtl_move_loop_invariants =
  {
    "loop2_invariant",                    /* name */
    gate_rtl_move_loop_invariants,        /* gate */
    rtl_move_loop_invariants,             /* execute */
--- 244,253 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_rtl_move_loop_invariants =
  {
+  {
+   RTL_PASS,
    "loop2_invariant",                    /* name */
    gate_rtl_move_loop_invariants,        /* gate */
    rtl_move_loop_invariants,             /* execute */
*************** struct tree_opt_pass pass_rtl_move_loop_
*** 253,260 ****
    0,                                    /* todo_flags_start */ 
    TODO_df_verify |
    TODO_df_finish | TODO_verify_rtl_sharing |
!   TODO_dump_func,                       /* todo_flags_finish */
!   'L'                                   /* letter */
  };
  
  \f
--- 261,268 ----
    0,                                    /* todo_flags_start */ 
    TODO_df_verify |
    TODO_df_finish | TODO_verify_rtl_sharing |
!   TODO_dump_func                        /* todo_flags_finish */
!  }
  };
  
  \f
*************** rtl_unswitch (void)
*** 273,280 ****
    return 0;
  }
  
! struct tree_opt_pass pass_rtl_unswitch =
  {
    "loop2_unswitch",                      /* name */
    gate_rtl_unswitch,                    /* gate */
    rtl_unswitch,                         /* execute */
--- 281,290 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_rtl_unswitch =
  {
+  {
+   RTL_PASS,
    "loop2_unswitch",                      /* name */
    gate_rtl_unswitch,                    /* gate */
    rtl_unswitch,                         /* execute */
*************** struct tree_opt_pass pass_rtl_unswitch =
*** 287,293 ****
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_dump_func | TODO_verify_rtl_sharing, /* todo_flags_finish */
!   'L'                                   /* letter */
  };
  
  \f
--- 297,303 ----
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_dump_func | TODO_verify_rtl_sharing, /* todo_flags_finish */
!  }
  };
  
  \f
*************** rtl_unroll_and_peel_loops (void)
*** 319,326 ****
    return 0;
  }
  
! struct tree_opt_pass pass_rtl_unroll_and_peel_loops =
  {
    "loop2_unroll",                        /* name */
    gate_rtl_unroll_and_peel_loops,       /* gate */
    rtl_unroll_and_peel_loops,            /* execute */
--- 329,338 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_rtl_unroll_and_peel_loops =
  {
+  {
+   RTL_PASS,
    "loop2_unroll",                        /* name */
    gate_rtl_unroll_and_peel_loops,       /* gate */
    rtl_unroll_and_peel_loops,            /* execute */
*************** struct tree_opt_pass pass_rtl_unroll_and
*** 333,339 ****
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_dump_func | TODO_verify_rtl_sharing, /* todo_flags_finish */
!   'L'                                   /* letter */
  };
  
  \f
--- 345,351 ----
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_dump_func | TODO_verify_rtl_sharing, /* todo_flags_finish */
!  }
  };
  
  \f
*************** rtl_doloop (void)
*** 358,365 ****
    return 0;
  }
  
! struct tree_opt_pass pass_rtl_doloop =
  {
    "loop2_doloop",                        /* name */
    gate_rtl_doloop,                      /* gate */
    rtl_doloop,                           /* execute */
--- 370,379 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_rtl_doloop =
  {
+  {
+   RTL_PASS,
    "loop2_doloop",                        /* name */
    gate_rtl_doloop,                      /* gate */
    rtl_doloop,                           /* execute */
*************** struct tree_opt_pass pass_rtl_doloop =
*** 371,377 ****
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   TODO_dump_func | TODO_verify_rtl_sharing, /* todo_flags_finish */
!   'L'                                   /* letter */
  };
  
--- 385,391 ----
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   TODO_dump_func | TODO_verify_rtl_sharing /* todo_flags_finish */
!  }
  };
  
Index: gimple-low.c
===================================================================
*** gimple-low.c	(revision 133313)
--- gimple-low.c	(working copy)
*************** lower_function_body (void)
*** 148,155 ****
    return 0;
  }
  
! struct tree_opt_pass pass_lower_cf = 
  {
    "lower",				/* name */
    NULL,					/* gate */
    lower_function_body,			/* execute */
--- 148,157 ----
    return 0;
  }
  
! struct gimple_opt_pass pass_lower_cf = 
  {
+  {
+   GIMPLE_PASS,
    "lower",				/* name */
    NULL,					/* gate */
    lower_function_body,			/* execute */
*************** struct tree_opt_pass pass_lower_cf = 
*** 161,168 ****
    PROP_gimple_lcf,			/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func,			/* todo_flags_finish */
!   0					/* letter */
  };
  
  
--- 163,170 ----
    PROP_gimple_lcf,			/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func			/* todo_flags_finish */
!  }
  };
  
  
*************** mark_used_blocks (void)
*** 790,797 ****
  }
  
  
! struct tree_opt_pass pass_mark_used_blocks = 
  {
    "blocks",				/* name */
    NULL,					/* gate */
    mark_used_blocks,			/* execute */
--- 792,801 ----
  }
  
  
! struct gimple_opt_pass pass_mark_used_blocks = 
  {
+  {
+   GIMPLE_PASS,
    "blocks",				/* name */
    NULL,					/* gate */
    mark_used_blocks,			/* execute */
*************** struct tree_opt_pass pass_mark_used_bloc
*** 803,808 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func,			/* todo_flags_finish */
!   0					/* letter */
  };
--- 807,812 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func			/* todo_flags_finish */
!  }
  };
Index: ipa-inline.c
===================================================================
*** ipa-inline.c	(revision 133313)
--- ipa-inline.c	(working copy)
*************** cgraph_gate_inlining (void)
*** 1426,1433 ****
    return flag_inline_trees;
  }
  
! struct tree_opt_pass pass_ipa_inline = 
  {
    "inline",				/* name */
    cgraph_gate_inlining,			/* gate */
    cgraph_decide_inlining,		/* execute */
--- 1426,1435 ----
    return flag_inline_trees;
  }
  
! struct simple_ipa_opt_pass pass_ipa_inline = 
  {
+  {
+   SIMPLE_IPA_PASS,
    "inline",				/* name */
    cgraph_gate_inlining,			/* gate */
    cgraph_decide_inlining,		/* execute */
*************** struct tree_opt_pass pass_ipa_inline = 
*** 1440,1447 ****
    0,					/* properties_destroyed */
    TODO_remove_functions,		/* todo_flags_finish */
    TODO_dump_cgraph | TODO_dump_func
!   | TODO_remove_functions,		/* todo_flags_finish */
!   0					/* letter */
  };
  
  /* Because inlining might remove no-longer reachable nodes, we need to
--- 1442,1449 ----
    0,					/* properties_destroyed */
    TODO_remove_functions,		/* todo_flags_finish */
    TODO_dump_cgraph | TODO_dump_func
!   | TODO_remove_functions		/* todo_flags_finish */
!  }
  };
  
  /* Because inlining might remove no-longer reachable nodes, we need to
*************** cgraph_gate_early_inlining (void)
*** 1479,1486 ****
    return flag_inline_trees && flag_early_inlining;
  }
  
! struct tree_opt_pass pass_early_inline = 
  {
    "einline",	 			/* name */
    cgraph_gate_early_inlining,		/* gate */
    cgraph_early_inlining,		/* execute */
--- 1481,1490 ----
    return flag_inline_trees && flag_early_inlining;
  }
  
! struct gimple_opt_pass pass_early_inline = 
  {
+  {
+   GIMPLE_PASS,
    "einline",	 			/* name */
    cgraph_gate_early_inlining,		/* gate */
    cgraph_early_inlining,		/* execute */
*************** struct tree_opt_pass pass_early_inline =
*** 1492,1499 ****
    PROP_cfg,				/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func,    			/* todo_flags_finish */
!   0					/* letter */
  };
  
  /* When inlining shall be performed.  */
--- 1496,1503 ----
    PROP_cfg,				/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func    			/* todo_flags_finish */
!  }
  };
  
  /* When inlining shall be performed.  */
*************** cgraph_gate_ipa_early_inlining (void)
*** 1507,1514 ****
  
  /* IPA pass wrapper for early inlining pass.  We need to run early inlining
     before tree profiling so we have stand alone IPA pass for doing so.  */
! struct tree_opt_pass pass_ipa_early_inline = 
  {
    "einline_ipa",			/* name */
    cgraph_gate_ipa_early_inlining,	/* gate */
    NULL,					/* execute */
--- 1511,1520 ----
  
  /* IPA pass wrapper for early inlining pass.  We need to run early inlining
     before tree profiling so we have stand alone IPA pass for doing so.  */
! struct simple_ipa_opt_pass pass_ipa_early_inline = 
  {
+  {
+   SIMPLE_IPA_PASS,
    "einline_ipa",			/* name */
    cgraph_gate_ipa_early_inlining,	/* gate */
    NULL,					/* execute */
*************** struct tree_opt_pass pass_ipa_early_inli
*** 1520,1527 ****
    PROP_cfg,				/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_cgraph, 		        /* todo_flags_finish */
!   0					/* letter */
  };
  
  /* Compute parameters of functions used by inliner.  */
--- 1526,1533 ----
    PROP_cfg,				/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_cgraph 		        /* todo_flags_finish */
!  }
  };
  
  /* Compute parameters of functions used by inliner.  */
*************** gate_inline_passes (void)
*** 1554,1561 ****
    return flag_inline_trees;
  }
  
! struct tree_opt_pass pass_inline_parameters = 
  {
    NULL,	 				/* name */
    gate_inline_passes,			/* gate */
    compute_inline_parameters,		/* execute */
--- 1560,1569 ----
    return flag_inline_trees;
  }
  
! struct gimple_opt_pass pass_inline_parameters = 
  {
+  {
+   GIMPLE_PASS,
    NULL,	 				/* name */
    gate_inline_passes,			/* gate */
    compute_inline_parameters,		/* execute */
*************** struct tree_opt_pass pass_inline_paramet
*** 1567,1574 ****
    PROP_cfg,				/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   0,					/* todo_flags_finish */
!   0					/* letter */
  };
  
  /* Apply inline plan to the function.  */
--- 1575,1582 ----
    PROP_cfg,				/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   0					/* todo_flags_finish */
!  }
  };
  
  /* Apply inline plan to the function.  */
*************** apply_inline (void)
*** 1609,1616 ****
    return todo | execute_fixup_cfg ();
  }
  
! struct tree_opt_pass pass_apply_inline = 
  {
    "apply_inline",			/* name */
    NULL,					/* gate */
    apply_inline,				/* execute */
--- 1617,1626 ----
    return todo | execute_fixup_cfg ();
  }
  
! struct gimple_opt_pass pass_apply_inline = 
  {
+  {
+   GIMPLE_PASS,
    "apply_inline",			/* name */
    NULL,					/* gate */
    apply_inline,				/* execute */
*************** struct tree_opt_pass pass_apply_inline =
*** 1623,1630 ****
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
    TODO_dump_func | TODO_verify_flow
!   | TODO_verify_stmts,			/* todo_flags_finish */
!   0					/* letter */
  };
  
  #include "gt-ipa-inline.h"
--- 1633,1640 ----
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
    TODO_dump_func | TODO_verify_flow
!   | TODO_verify_stmts			/* todo_flags_finish */
!  }
  };
  
  #include "gt-ipa-inline.h"
Index: tree-ssa-sink.c
===================================================================
*** tree-ssa-sink.c	(revision 133313)
--- tree-ssa-sink.c	(working copy)
*************** gate_sink (void)
*** 568,575 ****
    return flag_tree_sink != 0;
  }
  
! struct tree_opt_pass pass_sink_code =
  {
    "sink",				/* name */
    gate_sink,				/* gate */
    do_sink,				/* execute */
--- 568,577 ----
    return flag_tree_sink != 0;
  }
  
! struct gimple_opt_pass pass_sink_code =
  {
+  {
+   GIMPLE_PASS,
    "sink",				/* name */
    gate_sink,				/* gate */
    do_sink,				/* execute */
*************** struct tree_opt_pass pass_sink_code =
*** 585,590 ****
    TODO_update_ssa 
      | TODO_dump_func
      | TODO_ggc_collect
!     | TODO_verify_ssa,			/* todo_flags_finish */
!   0					/* letter */
  };
--- 587,592 ----
    TODO_update_ssa 
      | TODO_dump_func
      | TODO_ggc_collect
!     | TODO_verify_ssa			/* todo_flags_finish */
!  }
  };
Index: global.c
===================================================================
*** global.c	(revision 133313)
--- global.c	(working copy)
*************** rest_of_handle_global_alloc (void)
*** 1783,1789 ****
        failure = reload (get_insns (), 0);
      }
  
!   if (dump_enabled_p (pass_global_alloc.static_pass_number))
      {
        timevar_push (TV_DUMP);
        dump_global_regs (dump_file);
--- 1783,1789 ----
        failure = reload (get_insns (), 0);
      }
  
!   if (dump_enabled_p (pass_global_alloc.pass.static_pass_number))
      {
        timevar_push (TV_DUMP);
        dump_global_regs (dump_file);
*************** rest_of_handle_global_alloc (void)
*** 1817,1824 ****
    return 0;
  }
  
! struct tree_opt_pass pass_global_alloc =
  {
    "greg",                               /* name */
    NULL,                                 /* gate */
    rest_of_handle_global_alloc,          /* execute */
--- 1817,1826 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_global_alloc =
  {
+  {
+   RTL_PASS,
    "greg",                               /* name */
    NULL,                                 /* gate */
    rest_of_handle_global_alloc,          /* execute */
*************** struct tree_opt_pass pass_global_alloc =
*** 1831,1837 ****
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_dump_func | TODO_verify_rtl_sharing
!   | TODO_ggc_collect,                   /* todo_flags_finish */
!   'g'                                   /* letter */
  };
  
--- 1833,1839 ----
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_dump_func | TODO_verify_rtl_sharing
!   | TODO_ggc_collect                    /* todo_flags_finish */
!  }
  };
  
Index: ifcvt.c
===================================================================
*** ifcvt.c	(revision 133313)
--- ifcvt.c	(working copy)
*************** rest_of_handle_if_conversion (void)
*** 4143,4150 ****
    return 0;
  }
  
! struct tree_opt_pass pass_rtl_ifcvt =
  {
    "ce1",                                /* name */
    gate_handle_if_conversion,            /* gate */
    rest_of_handle_if_conversion,         /* execute */
--- 4143,4152 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_rtl_ifcvt =
  {
+  {
+   RTL_PASS,
    "ce1",                                /* name */
    gate_handle_if_conversion,            /* gate */
    rest_of_handle_if_conversion,         /* execute */
*************** struct tree_opt_pass pass_rtl_ifcvt =
*** 4157,4164 ****
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_df_finish | TODO_verify_rtl_sharing |
!   TODO_dump_func,                       /* todo_flags_finish */
!   'C'                                   /* letter */
  };
  
  static bool
--- 4159,4166 ----
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_df_finish | TODO_verify_rtl_sharing |
!   TODO_dump_func                        /* todo_flags_finish */
!  }
  };
  
  static bool
*************** rest_of_handle_if_after_combine (void)
*** 4178,4185 ****
    return 0;
  }
  
! struct tree_opt_pass pass_if_after_combine =
  {
    "ce2",                                /* name */
    gate_handle_if_after_combine,         /* gate */
    rest_of_handle_if_after_combine,      /* execute */
--- 4180,4189 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_if_after_combine =
  {
+  {
+   RTL_PASS,
    "ce2",                                /* name */
    gate_handle_if_after_combine,         /* gate */
    rest_of_handle_if_after_combine,      /* execute */
*************** struct tree_opt_pass pass_if_after_combi
*** 4193,4200 ****
    0,                                    /* todo_flags_start */
    TODO_df_finish | TODO_verify_rtl_sharing |
    TODO_dump_func |
!   TODO_ggc_collect,                     /* todo_flags_finish */
!   'C'                                   /* letter */
  };
  
  
--- 4197,4204 ----
    0,                                    /* todo_flags_start */
    TODO_df_finish | TODO_verify_rtl_sharing |
    TODO_dump_func |
!   TODO_ggc_collect                      /* todo_flags_finish */
!  }
  };
  
  
*************** rest_of_handle_if_after_reload (void)
*** 4213,4220 ****
  }
  
  
! struct tree_opt_pass pass_if_after_reload =
  {
    "ce3",                                /* name */
    gate_handle_if_after_reload,          /* gate */
    rest_of_handle_if_after_reload,       /* execute */
--- 4217,4226 ----
  }
  
  
! struct rtl_opt_pass pass_if_after_reload =
  {
+  {
+   RTL_PASS,
    "ce3",                                /* name */
    gate_handle_if_after_reload,          /* gate */
    rest_of_handle_if_after_reload,       /* execute */
*************** struct tree_opt_pass pass_if_after_reloa
*** 4228,4233 ****
    0,                                    /* todo_flags_start */
    TODO_df_finish | TODO_verify_rtl_sharing |
    TODO_dump_func |
!   TODO_ggc_collect,                     /* todo_flags_finish */
!   'E'                                   /* letter */
  };
--- 4234,4239 ----
    0,                                    /* todo_flags_start */
    TODO_df_finish | TODO_verify_rtl_sharing |
    TODO_dump_func |
!   TODO_ggc_collect                      /* todo_flags_finish */
!  }
  };
Index: jump.c
===================================================================
*** jump.c	(revision 133313)
--- jump.c	(working copy)
*************** cleanup_barriers (void)
*** 122,129 ****
    return 0;
  }
  
! struct tree_opt_pass pass_cleanup_barriers =
  {
    "barriers",                           /* name */
    NULL,                                 /* gate */
    cleanup_barriers,                     /* execute */
--- 122,131 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_cleanup_barriers =
  {
+  {
+   RTL_PASS,
    "barriers",                           /* name */
    NULL,                                 /* gate */
    cleanup_barriers,                     /* execute */
*************** struct tree_opt_pass pass_cleanup_barrie
*** 135,142 ****
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   TODO_dump_func,                       /* todo_flags_finish */
!   0                                     /* letter */
  };
  
  \f
--- 137,144 ----
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   TODO_dump_func                        /* todo_flags_finish */
!  }
  };
  
  \f
Index: predict.c
===================================================================
*** predict.c	(revision 133313)
--- predict.c	(working copy)
*************** predictor_name (enum br_predictor predic
*** 1939,1946 ****
    return predictor_info[predictor].name;
  }
  
! struct tree_opt_pass pass_profile = 
  {
    "profile",				/* name */
    gate_estimate_probability,		/* gate */
    tree_estimate_probability,		/* execute */
--- 1939,1948 ----
    return predictor_info[predictor].name;
  }
  
! struct gimple_opt_pass pass_profile = 
  {
+  {
+   GIMPLE_PASS,
    "profile",				/* name */
    gate_estimate_probability,		/* gate */
    tree_estimate_probability,		/* execute */
*************** struct tree_opt_pass pass_profile = 
*** 1952,1957 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_ggc_collect | TODO_verify_ssa,			/* todo_flags_finish */
!   0					/* letter */
  };
--- 1954,1959 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_ggc_collect | TODO_verify_ssa			/* todo_flags_finish */
!  }
  };
Index: tree-ssa-loop.c
===================================================================
*** tree-ssa-loop.c	(revision 133313)
--- tree-ssa-loop.c	(working copy)
*************** gate_tree_loop (void)
*** 55,62 ****
    return flag_tree_loop_optimize != 0;
  }
  
! struct tree_opt_pass pass_tree_loop = 
  {
    "loop",				/* name */
    gate_tree_loop,			/* gate */
    NULL,					/* execute */
--- 55,64 ----
    return flag_tree_loop_optimize != 0;
  }
  
! struct gimple_opt_pass pass_tree_loop = 
  {
+  {
+   GIMPLE_PASS,
    "loop",				/* name */
    gate_tree_loop,			/* gate */
    NULL,					/* execute */
*************** struct tree_opt_pass pass_tree_loop = 
*** 68,75 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    TODO_ggc_collect,			/* todo_flags_start */
!   TODO_dump_func | TODO_verify_ssa | TODO_ggc_collect,	/* todo_flags_finish */
!   0					/* letter */
  };
  
  /* Loop optimizer initialization.  */
--- 70,77 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    TODO_ggc_collect,			/* todo_flags_start */
!   TODO_dump_func | TODO_verify_ssa | TODO_ggc_collect	/* todo_flags_finish */
!  }
  };
  
  /* Loop optimizer initialization.  */
*************** tree_ssa_loop_init (void)
*** 85,92 ****
    return 0;
  }
    
! struct tree_opt_pass pass_tree_loop_init = 
  {
    "loopinit",				/* name */
    NULL,					/* gate */
    tree_ssa_loop_init,			/* execute */
--- 87,96 ----
    return 0;
  }
    
! struct gimple_opt_pass pass_tree_loop_init = 
  {
+  {
+   GIMPLE_PASS,
    "loopinit",				/* name */
    NULL,					/* gate */
    tree_ssa_loop_init,			/* execute */
*************** struct tree_opt_pass pass_tree_loop_init
*** 98,105 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func | TODO_verify_loops,	/* todo_flags_finish */
!   0					/* letter */
  };
  
  /* Loop invariant motion pass.  */
--- 102,109 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func | TODO_verify_loops	/* todo_flags_finish */
!  }
  };
  
  /* Loop invariant motion pass.  */
*************** gate_tree_ssa_loop_im (void)
*** 120,127 ****
    return flag_tree_loop_im != 0;
  }
  
! struct tree_opt_pass pass_lim = 
  {
    "lim",				/* name */
    gate_tree_ssa_loop_im,		/* gate */
    tree_ssa_loop_im,			/* execute */
--- 124,133 ----
    return flag_tree_loop_im != 0;
  }
  
! struct gimple_opt_pass pass_lim = 
  {
+  {
+   GIMPLE_PASS,
    "lim",				/* name */
    gate_tree_ssa_loop_im,		/* gate */
    tree_ssa_loop_im,			/* execute */
*************** struct tree_opt_pass pass_lim = 
*** 133,140 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func | TODO_verify_loops,	/* todo_flags_finish */
!   0					/* letter */
  };
  
  /* Loop unswitching pass.  */
--- 139,146 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func | TODO_verify_loops	/* todo_flags_finish */
!  }
  };
  
  /* Loop unswitching pass.  */
*************** gate_tree_ssa_loop_unswitch (void)
*** 154,161 ****
    return flag_unswitch_loops != 0;
  }
  
! struct tree_opt_pass pass_tree_unswitch = 
  {
    "unswitch",				/* name */
    gate_tree_ssa_loop_unswitch,		/* gate */
    tree_ssa_loop_unswitch,		/* execute */
--- 160,169 ----
    return flag_unswitch_loops != 0;
  }
  
! struct gimple_opt_pass pass_tree_unswitch = 
  {
+  {
+   GIMPLE_PASS,
    "unswitch",				/* name */
    gate_tree_ssa_loop_unswitch,		/* gate */
    tree_ssa_loop_unswitch,		/* execute */
*************** struct tree_opt_pass pass_tree_unswitch 
*** 168,175 ****
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
    TODO_ggc_collect | TODO_dump_func
!     | TODO_verify_loops,		/* todo_flags_finish */
!   0					/* letter */
  };
  
  /* Predictive commoning.  */
--- 176,183 ----
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
    TODO_ggc_collect | TODO_dump_func
!     | TODO_verify_loops		 	/* todo_flags_finish */
!  }
  };
  
  /* Predictive commoning.  */
*************** gate_tree_predictive_commoning (void)
*** 190,197 ****
    return flag_predictive_commoning != 0;
  }
  
! struct tree_opt_pass pass_predcom = 
  {
    "pcom",				/* name */
    gate_tree_predictive_commoning,	/* gate */
    run_tree_predictive_commoning,	/* execute */
--- 198,207 ----
    return flag_predictive_commoning != 0;
  }
  
! struct gimple_opt_pass pass_predcom = 
  {
+  {
+   GIMPLE_PASS,
    "pcom",				/* name */
    gate_tree_predictive_commoning,	/* gate */
    run_tree_predictive_commoning,	/* execute */
*************** struct tree_opt_pass pass_predcom = 
*** 204,211 ****
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
    TODO_dump_func | TODO_verify_loops
!     | TODO_update_ssa_only_virtuals,	/* todo_flags_finish */
!   0					/* letter */
  };
  
  /* Loop autovectorization.  */
--- 214,221 ----
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
    TODO_dump_func | TODO_verify_loops
!     | TODO_update_ssa_only_virtuals	/* todo_flags_finish */
!  }
  };
  
  /* Loop autovectorization.  */
*************** gate_tree_vectorize (void)
*** 222,229 ****
    return flag_tree_vectorize && number_of_loops () > 1;
  }
  
! struct tree_opt_pass pass_vectorize =
  {
    "vect",                               /* name */
    gate_tree_vectorize,                  /* gate */
    tree_vectorize,                       /* execute */
--- 232,241 ----
    return flag_tree_vectorize && number_of_loops () > 1;
  }
  
! struct gimple_opt_pass pass_vectorize =
  {
+  {
+   GIMPLE_PASS,
    "vect",                               /* name */
    gate_tree_vectorize,                  /* gate */
    tree_vectorize,                       /* execute */
*************** struct tree_opt_pass pass_vectorize =
*** 236,243 ****
    0,                                    /* properties_destroyed */
    TODO_verify_loops,			/* todo_flags_start */
    TODO_dump_func | TODO_update_ssa
!     | TODO_ggc_collect,			/* todo_flags_finish */
!   0					/* letter */
  };
  
  /* Loop nest optimizations.  */
--- 248,255 ----
    0,                                    /* properties_destroyed */
    TODO_verify_loops,			/* todo_flags_start */
    TODO_dump_func | TODO_update_ssa
!     | TODO_ggc_collect			/* todo_flags_finish */
!  }
  };
  
  /* Loop nest optimizations.  */
*************** gate_tree_linear_transform (void)
*** 258,265 ****
    return flag_tree_loop_linear != 0;
  }
  
! struct tree_opt_pass pass_linear_transform =
  {
    "ltrans",				/* name */
    gate_tree_linear_transform,		/* gate */
    tree_linear_transform,       		/* execute */
--- 270,279 ----
    return flag_tree_loop_linear != 0;
  }
  
! struct gimple_opt_pass pass_linear_transform =
  {
+  {
+   GIMPLE_PASS,
    "ltrans",				/* name */
    gate_tree_linear_transform,		/* gate */
    tree_linear_transform,       		/* execute */
*************** struct tree_opt_pass pass_linear_transfo
*** 273,280 ****
    0,					/* todo_flags_start */
    TODO_dump_func | TODO_verify_loops
      | TODO_update_ssa_only_virtuals
!     | TODO_ggc_collect,			/* todo_flags_finish */
!   0				        /* letter */	
  };
  
  /* Check the correctness of the data dependence analyzers.  */
--- 287,294 ----
    0,					/* todo_flags_start */
    TODO_dump_func | TODO_verify_loops
      | TODO_update_ssa_only_virtuals
!     | TODO_ggc_collect			/* todo_flags_finish */
!  }
  };
  
  /* Check the correctness of the data dependence analyzers.  */
*************** gate_check_data_deps (void)
*** 295,302 ****
    return flag_check_data_deps != 0;
  }
  
! struct tree_opt_pass pass_check_data_deps =
  {
    "ckdd",				/* name */
    gate_check_data_deps,	        	/* gate */
    check_data_deps,       		/* execute */
--- 309,318 ----
    return flag_check_data_deps != 0;
  }
  
! struct gimple_opt_pass pass_check_data_deps =
  {
+  {
+   GIMPLE_PASS,
    "ckdd",				/* name */
    gate_check_data_deps,	        	/* gate */
    check_data_deps,       		/* execute */
*************** struct tree_opt_pass pass_check_data_dep
*** 308,315 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func,                	/* todo_flags_finish */
!   0				        /* letter */	
  };
  
  /* Canonical induction variable creation pass.  */
--- 324,331 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func                	/* todo_flags_finish */
!  }
  };
  
  /* Canonical induction variable creation pass.  */
*************** gate_tree_ssa_loop_ivcanon (void)
*** 329,336 ****
    return flag_tree_loop_ivcanon != 0;
  }
  
! struct tree_opt_pass pass_iv_canon =
  {
    "ivcanon",				/* name */
    gate_tree_ssa_loop_ivcanon,		/* gate */
    tree_ssa_loop_ivcanon,	       	/* execute */
--- 345,354 ----
    return flag_tree_loop_ivcanon != 0;
  }
  
! struct gimple_opt_pass pass_iv_canon =
  {
+  {
+   GIMPLE_PASS,
    "ivcanon",				/* name */
    gate_tree_ssa_loop_ivcanon,		/* gate */
    tree_ssa_loop_ivcanon,	       	/* execute */
*************** struct tree_opt_pass pass_iv_canon =
*** 342,349 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func | TODO_verify_loops,	/* todo_flags_finish */
!   0					/* letter */
  };
  
  /* Propagation of constants using scev.  */
--- 360,367 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func | TODO_verify_loops	/* todo_flags_finish */
!  }
  };
  
  /* Propagation of constants using scev.  */
*************** gate_scev_const_prop (void)
*** 354,361 ****
    return flag_tree_scev_cprop;
  }
  
! struct tree_opt_pass pass_scev_cprop =
  {
    "sccp",				/* name */
    gate_scev_const_prop,			/* gate */
    scev_const_prop,	       		/* execute */
--- 372,381 ----
    return flag_tree_scev_cprop;
  }
  
! struct gimple_opt_pass pass_scev_cprop =
  {
+  {
+   GIMPLE_PASS,
    "sccp",				/* name */
    gate_scev_const_prop,			/* gate */
    scev_const_prop,	       		/* execute */
*************** struct tree_opt_pass pass_scev_cprop =
*** 368,376 ****
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
    TODO_dump_func | TODO_cleanup_cfg
!     | TODO_update_ssa_only_virtuals,
  					/* todo_flags_finish */
!   0					/* letter */
  };
  
  /* Remove empty loops.  */
--- 388,396 ----
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
    TODO_dump_func | TODO_cleanup_cfg
!     | TODO_update_ssa_only_virtuals
  					/* todo_flags_finish */
!  }
  };
  
  /* Remove empty loops.  */
*************** tree_ssa_empty_loop (void)
*** 384,391 ****
    return remove_empty_loops ();
  }
  
! struct tree_opt_pass pass_empty_loop =
  {
    "empty",				/* name */
    NULL,					/* gate */
    tree_ssa_empty_loop,		       	/* execute */
--- 404,413 ----
    return remove_empty_loops ();
  }
  
! struct gimple_opt_pass pass_empty_loop =
  {
+  {
+   GIMPLE_PASS,
    "empty",				/* name */
    NULL,					/* gate */
    tree_ssa_empty_loop,		       	/* execute */
*************** struct tree_opt_pass pass_empty_loop =
*** 398,405 ****
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
    TODO_dump_func | TODO_verify_loops 
!     | TODO_ggc_collect,			/* todo_flags_finish */
!   0					/* letter */
  };
  
  /* Record bounds on numbers of iterations of loops.  */
--- 420,427 ----
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
    TODO_dump_func | TODO_verify_loops 
!     | TODO_ggc_collect			/* todo_flags_finish */
!  }
  };
  
  /* Record bounds on numbers of iterations of loops.  */
*************** tree_ssa_loop_bounds (void)
*** 415,422 ****
    return 0;
  }
  
! struct tree_opt_pass pass_record_bounds =
  {
    NULL,					/* name */
    NULL,					/* gate */
    tree_ssa_loop_bounds,		       	/* execute */
--- 437,446 ----
    return 0;
  }
  
! struct gimple_opt_pass pass_record_bounds =
  {
+  {
+   GIMPLE_PASS,
    NULL,					/* name */
    NULL,					/* gate */
    tree_ssa_loop_bounds,		       	/* execute */
*************** struct tree_opt_pass pass_record_bounds 
*** 428,435 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   0,			              	/* todo_flags_finish */
!   0					/* letter */
  };
  
  /* Complete unrolling of loops.  */
--- 452,459 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   0			              	/* todo_flags_finish */
!  }
  };
  
  /* Complete unrolling of loops.  */
*************** gate_tree_complete_unroll (void)
*** 451,458 ****
    return true;
  }
  
! struct tree_opt_pass pass_complete_unroll =
  {
    "cunroll",				/* name */
    gate_tree_complete_unroll,		/* gate */
    tree_complete_unroll,		       	/* execute */
--- 475,484 ----
    return true;
  }
  
! struct gimple_opt_pass pass_complete_unroll =
  {
+  {
+   GIMPLE_PASS,
    "cunroll",				/* name */
    gate_tree_complete_unroll,		/* gate */
    tree_complete_unroll,		       	/* execute */
*************** struct tree_opt_pass pass_complete_unrol
*** 465,472 ****
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
    TODO_dump_func | TODO_verify_loops
!     | TODO_ggc_collect,			/* todo_flags_finish */
!   0					/* letter */
  };
  
  /* Parallelization.  */
--- 491,498 ----
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
    TODO_dump_func | TODO_verify_loops
!     | TODO_ggc_collect			/* todo_flags_finish */
!  }
  };
  
  /* Parallelization.  */
*************** tree_parallelize_loops (void)
*** 488,495 ****
    return 0;
  }
  
! struct tree_opt_pass pass_parallelize_loops =
  {
    "parloops",				/* name */
    gate_tree_parallelize_loops,		/* gate */
    tree_parallelize_loops,      		/* execute */
--- 514,523 ----
    return 0;
  }
  
! struct gimple_opt_pass pass_parallelize_loops =
  {
+  {
+   GIMPLE_PASS,
    "parloops",				/* name */
    gate_tree_parallelize_loops,		/* gate */
    tree_parallelize_loops,      		/* execute */
*************** struct tree_opt_pass pass_parallelize_lo
*** 501,508 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func | TODO_verify_loops,	/* todo_flags_finish */
!   0				        /* letter */	
  };
  
  /* Prefetching.  */
--- 529,536 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func | TODO_verify_loops	/* todo_flags_finish */
!  }
  };
  
  /* Prefetching.  */
*************** gate_tree_ssa_loop_prefetch (void)
*** 522,529 ****
    return flag_prefetch_loop_arrays != 0;
  }
  
! struct tree_opt_pass pass_loop_prefetch =
  {
    "aprefetch",				/* name */
    gate_tree_ssa_loop_prefetch,		/* gate */
    tree_ssa_loop_prefetch,	       	/* execute */
--- 550,559 ----
    return flag_prefetch_loop_arrays != 0;
  }
  
! struct gimple_opt_pass pass_loop_prefetch =
  {
+  {
+   GIMPLE_PASS,
    "aprefetch",				/* name */
    gate_tree_ssa_loop_prefetch,		/* gate */
    tree_ssa_loop_prefetch,	       	/* execute */
*************** struct tree_opt_pass pass_loop_prefetch 
*** 535,542 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func | TODO_verify_loops,	/* todo_flags_finish */
!   0					/* letter */
  };
  
  /* Induction variable optimizations.  */
--- 565,572 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func | TODO_verify_loops	/* todo_flags_finish */
!  }
  };
  
  /* Induction variable optimizations.  */
*************** gate_tree_ssa_loop_ivopts (void)
*** 557,564 ****
    return flag_ivopts != 0;
  }
  
! struct tree_opt_pass pass_iv_optimize =
  {
    "ivopts",				/* name */
    gate_tree_ssa_loop_ivopts,		/* gate */
    tree_ssa_loop_ivopts,		       	/* execute */
--- 587,596 ----
    return flag_ivopts != 0;
  }
  
! struct gimple_opt_pass pass_iv_optimize =
  {
+  {
+   GIMPLE_PASS,
    "ivopts",				/* name */
    gate_tree_ssa_loop_ivopts,		/* gate */
    tree_ssa_loop_ivopts,		       	/* execute */
*************** struct tree_opt_pass pass_iv_optimize =
*** 571,578 ****
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
    TODO_dump_func | TODO_verify_loops
!   | TODO_update_ssa | TODO_ggc_collect,	/* todo_flags_finish */
!   0					/* letter */
  };
  
  /* Loop optimizer finalization.  */
--- 603,610 ----
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
    TODO_dump_func | TODO_verify_loops
!   | TODO_update_ssa | TODO_ggc_collect	/* todo_flags_finish */
!  }
  };
  
  /* Loop optimizer finalization.  */
*************** tree_ssa_loop_done (void)
*** 586,593 ****
    return 0;
  }
    
! struct tree_opt_pass pass_tree_loop_done = 
  {
    "loopdone",				/* name */
    NULL,					/* gate */
    tree_ssa_loop_done,			/* execute */
--- 618,627 ----
    return 0;
  }
    
! struct gimple_opt_pass pass_tree_loop_done = 
  {
+  {
+   GIMPLE_PASS,
    "loopdone",				/* name */
    NULL,					/* gate */
    tree_ssa_loop_done,			/* execute */
*************** struct tree_opt_pass pass_tree_loop_done
*** 599,604 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_cleanup_cfg | TODO_dump_func,	/* todo_flags_finish */
!   0					/* letter */
  };
--- 633,638 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_cleanup_cfg | TODO_dump_func	/* todo_flags_finish */
!  }
  };
Index: recog.c
===================================================================
*** recog.c	(revision 133313)
--- recog.c	(working copy)
*************** rest_of_handle_peephole2 (void)
*** 3312,3319 ****
    return 0;
  }
  
! struct tree_opt_pass pass_peephole2 =
  {
    "peephole2",                          /* name */
    gate_handle_peephole2,                /* gate */
    rest_of_handle_peephole2,             /* execute */
--- 3312,3321 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_peephole2 =
  {
+  {
+   RTL_PASS,
    "peephole2",                          /* name */
    gate_handle_peephole2,                /* gate */
    rest_of_handle_peephole2,             /* execute */
*************** struct tree_opt_pass pass_peephole2 =
*** 3326,3333 ****
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_df_finish | TODO_verify_rtl_sharing |
!   TODO_dump_func,                       /* todo_flags_finish */
!   'z'                                   /* letter */
  };
  
  static unsigned int
--- 3328,3335 ----
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_df_finish | TODO_verify_rtl_sharing |
!   TODO_dump_func                       /* todo_flags_finish */
!  }
  };
  
  static unsigned int
*************** rest_of_handle_split_all_insns (void)
*** 3337,3344 ****
    return 0;
  }
  
! struct tree_opt_pass pass_split_all_insns =
  {
    "split1",                             /* name */
    NULL,                                 /* gate */
    rest_of_handle_split_all_insns,       /* execute */
--- 3339,3348 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_split_all_insns =
  {
+  {
+   RTL_PASS,
    "split1",                             /* name */
    NULL,                                 /* gate */
    rest_of_handle_split_all_insns,       /* execute */
*************** struct tree_opt_pass pass_split_all_insn
*** 3350,3357 ****
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   TODO_dump_func,                       /* todo_flags_finish */
!   0                                     /* letter */
  };
  
  static unsigned int
--- 3354,3361 ----
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   TODO_dump_func                        /* todo_flags_finish */
!  }
  };
  
  static unsigned int
*************** rest_of_handle_split_after_reload (void)
*** 3365,3372 ****
    return 0;
  }
  
! struct tree_opt_pass pass_split_after_reload =
  {
    "split2",                             /* name */
    NULL,                                 /* gate */
    rest_of_handle_split_after_reload,    /* execute */
--- 3369,3378 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_split_after_reload =
  {
+  {
+   RTL_PASS,
    "split2",                             /* name */
    NULL,                                 /* gate */
    rest_of_handle_split_after_reload,    /* execute */
*************** struct tree_opt_pass pass_split_after_re
*** 3378,3385 ****
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   TODO_dump_func,                       /* todo_flags_finish */
!   0                                     /* letter */
  };
  
  static bool
--- 3384,3391 ----
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   TODO_dump_func                        /* todo_flags_finish */
!  }
  };
  
  static bool
*************** rest_of_handle_split_before_regstack (vo
*** 3407,3414 ****
    return 0;
  }
  
! struct tree_opt_pass pass_split_before_regstack =
  {
    "split3",                             /* name */
    gate_handle_split_before_regstack,    /* gate */
    rest_of_handle_split_before_regstack, /* execute */
--- 3413,3422 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_split_before_regstack =
  {
+  {
+   RTL_PASS,
    "split3",                             /* name */
    gate_handle_split_before_regstack,    /* gate */
    rest_of_handle_split_before_regstack, /* execute */
*************** struct tree_opt_pass pass_split_before_r
*** 3420,3427 ****
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   TODO_dump_func,                       /* todo_flags_finish */
!   0                                     /* letter */
  };
  
  static bool
--- 3428,3435 ----
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   TODO_dump_func                        /* todo_flags_finish */
!  }
  };
  
  static bool
*************** rest_of_handle_split_before_sched2 (void
*** 3443,3450 ****
    return 0;
  }
  
! struct tree_opt_pass pass_split_before_sched2 =
  {
    "split4",                             /* name */
    gate_handle_split_before_sched2,      /* gate */
    rest_of_handle_split_before_sched2,   /* execute */
--- 3451,3460 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_split_before_sched2 =
  {
+  {
+   RTL_PASS,
    "split4",                             /* name */
    gate_handle_split_before_sched2,      /* gate */
    rest_of_handle_split_before_sched2,   /* execute */
*************** struct tree_opt_pass pass_split_before_s
*** 3457,3464 ****
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_verify_flow |
!   TODO_dump_func,                       /* todo_flags_finish */
!   0                                     /* letter */
  };
  
  /* The placement of the splitting that we do for shorten_branches
--- 3467,3474 ----
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_verify_flow |
!   TODO_dump_func                        /* todo_flags_finish */
!  }
  };
  
  /* The placement of the splitting that we do for shorten_branches
*************** gate_do_final_split (void)
*** 3473,3480 ****
  #endif 
  }
  
! struct tree_opt_pass pass_split_for_shorten_branches =
  {
    "split5",                             /* name */
    gate_do_final_split,                  /* gate */
    split_all_insns_noflow,               /* execute */
--- 3483,3492 ----
  #endif 
  }
  
! struct rtl_opt_pass pass_split_for_shorten_branches =
  {
+  {
+   RTL_PASS,
    "split5",                             /* name */
    gate_do_final_split,                  /* gate */
    split_all_insns_noflow,               /* execute */
*************** struct tree_opt_pass pass_split_for_shor
*** 3486,3493 ****
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   TODO_dump_func | TODO_verify_rtl_sharing, /* todo_flags_finish */
!   0                                     /* letter */
  };
  
  
--- 3498,3505 ----
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   TODO_dump_func | TODO_verify_rtl_sharing /* todo_flags_finish */
!  }
  };
  
  
Index: dse.c
===================================================================
*** dse.c	(revision 133313)
--- dse.c	(working copy)
*************** gate_dse2 (void)
*** 3303,3310 ****
      && dbg_cnt (dse2);
  }
  
! struct tree_opt_pass pass_rtl_dse1 =
  {
    "dse1",                               /* name */
    gate_dse1,                            /* gate */
    rest_of_handle_dse,                   /* execute */
--- 3303,3312 ----
      && dbg_cnt (dse2);
  }
  
! struct rtl_opt_pass pass_rtl_dse1 =
  {
+  {
+   RTL_PASS,
    "dse1",                               /* name */
    gate_dse1,                            /* gate */
    rest_of_handle_dse,                   /* execute */
*************** struct tree_opt_pass pass_rtl_dse1 =
*** 3318,3329 ****
    0,                                    /* todo_flags_start */
    TODO_dump_func |
    TODO_df_finish | TODO_verify_rtl_sharing |
!   TODO_ggc_collect,                     /* todo_flags_finish */
!   'w'                                   /* letter */
  };
  
! struct tree_opt_pass pass_rtl_dse2 =
  {
    "dse2",                               /* name */
    gate_dse2,                            /* gate */
    rest_of_handle_dse,                   /* execute */
--- 3320,3333 ----
    0,                                    /* todo_flags_start */
    TODO_dump_func |
    TODO_df_finish | TODO_verify_rtl_sharing |
!   TODO_ggc_collect                      /* todo_flags_finish */
!  }
  };
  
! struct rtl_opt_pass pass_rtl_dse2 =
  {
+  {
+   RTL_PASS,
    "dse2",                               /* name */
    gate_dse2,                            /* gate */
    rest_of_handle_dse,                   /* execute */
*************** struct tree_opt_pass pass_rtl_dse2 =
*** 3337,3342 ****
    0,                                    /* todo_flags_start */
    TODO_dump_func |
    TODO_df_finish | TODO_verify_rtl_sharing |
!   TODO_ggc_collect,                     /* todo_flags_finish */
!   'w'                                   /* letter */
  };
--- 3341,3346 ----
    0,                                    /* todo_flags_start */
    TODO_dump_func |
    TODO_df_finish | TODO_verify_rtl_sharing |
!   TODO_ggc_collect                      /* todo_flags_finish */
!  }
  };
Index: tree-ssa-ifcombine.c
===================================================================
*** tree-ssa-ifcombine.c	(revision 133313)
--- tree-ssa-ifcombine.c	(working copy)
*************** gate_ifcombine (void)
*** 605,611 ****
    return 1;
  }
  
! struct tree_opt_pass pass_tree_ifcombine = {
    "ifcombine",			/* name */
    gate_ifcombine,		/* gate */
    tree_ssa_ifcombine,		/* execute */
--- 605,614 ----
    return 1;
  }
  
! struct gimple_opt_pass pass_tree_ifcombine = 
! {
!  {
!   GIMPLE_PASS,
    "ifcombine",			/* name */
    gate_ifcombine,		/* gate */
    tree_ssa_ifcombine,		/* execute */
*************** struct tree_opt_pass pass_tree_ifcombine
*** 620,625 ****
    TODO_dump_func
    | TODO_ggc_collect
    | TODO_update_ssa
!   | TODO_verify_ssa,		/* todo_flags_finish */
!   0				/* letter */
  };
--- 623,628 ----
    TODO_dump_func
    | TODO_ggc_collect
    | TODO_update_ssa
!   | TODO_verify_ssa		/* todo_flags_finish */
!  }
  };
Index: matrix-reorg.c
===================================================================
*** matrix-reorg.c	(revision 133313)
--- matrix-reorg.c	(working copy)
*************** gate_matrix_reorg (void)
*** 2317,2323 ****
    return flag_ipa_matrix_reorg && flag_whole_program;
  }
  
! struct tree_opt_pass pass_ipa_matrix_reorg = {
    "matrix-reorg",		/* name */
    gate_matrix_reorg,		/* gate */
    matrix_reorg,			/* execute */
--- 2317,2326 ----
    return flag_ipa_matrix_reorg && flag_whole_program;
  }
  
! struct simple_ipa_opt_pass pass_ipa_matrix_reorg = 
! {
!  {
!   SIMPLE_IPA_PASS,
    "matrix-reorg",		/* name */
    gate_matrix_reorg,		/* gate */
    matrix_reorg,			/* execute */
*************** struct tree_opt_pass pass_ipa_matrix_reo
*** 2329,2334 ****
    PROP_trees,			/* properties_provided */
    0,				/* properties_destroyed */
    0,				/* todo_flags_start */
!   TODO_dump_cgraph | TODO_dump_func,	/* todo_flags_finish */
!   0				/* letter */
  };
--- 2332,2337 ----
    PROP_trees,			/* properties_provided */
    0,				/* properties_destroyed */
    0,				/* todo_flags_start */
!   TODO_dump_cgraph | TODO_dump_func	/* todo_flags_finish */
!  }
  };
Index: tree-eh.c
===================================================================
*** tree-eh.c	(revision 133313)
--- tree-eh.c	(working copy)
*************** lower_eh_constructs (void)
*** 1725,1732 ****
    return 0;
  }
  
! struct tree_opt_pass pass_lower_eh =
  {
    "eh",					/* name */
    NULL,					/* gate */
    lower_eh_constructs,			/* execute */
--- 1725,1734 ----
    return 0;
  }
  
! struct gimple_opt_pass pass_lower_eh =
  {
+  {
+   GIMPLE_PASS,
    "eh",					/* name */
    NULL,					/* gate */
    lower_eh_constructs,			/* execute */
*************** struct tree_opt_pass pass_lower_eh =
*** 1738,1745 ****
    PROP_gimple_leh,			/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func,			/* todo_flags_finish */
!   0					/* letter */
  };
  
  \f
--- 1740,1747 ----
    PROP_gimple_leh,			/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func			/* todo_flags_finish */
!  }
  };
  
  \f
*************** refactor_eh (void)
*** 2244,2251 ****
    return 0;
  }
  
! struct tree_opt_pass pass_refactor_eh =
  {
    "ehopt",				/* name */
    NULL,					/* gate */
    refactor_eh,				/* execute */
--- 2246,2255 ----
    return 0;
  }
  
! struct gimple_opt_pass pass_refactor_eh =
  {
+  {
+   GIMPLE_PASS,
    "ehopt",				/* name */
    NULL,					/* gate */
    refactor_eh,				/* execute */
*************** struct tree_opt_pass pass_refactor_eh =
*** 2257,2262 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func,			/* todo_flags_finish */
!   0					/* letter */
  };
--- 2261,2266 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func			/* todo_flags_finish */
!  }
  };
Index: regmove.c
===================================================================
*** regmove.c	(revision 133313)
--- regmove.c	(working copy)
*************** rest_of_handle_regmove (void)
*** 2135,2142 ****
    return 0;
  }
  
! struct tree_opt_pass pass_regmove =
  {
    "regmove",                            /* name */
    gate_handle_regmove,                  /* gate */
    rest_of_handle_regmove,               /* execute */
--- 2135,2144 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_regmove =
  {
+  {
+   RTL_PASS,
    "regmove",                            /* name */
    gate_handle_regmove,                  /* gate */
    rest_of_handle_regmove,               /* execute */
*************** struct tree_opt_pass pass_regmove =
*** 2150,2156 ****
    0,                                    /* todo_flags_start */
    TODO_df_finish | TODO_verify_rtl_sharing |
    TODO_dump_func |
!   TODO_ggc_collect,                     /* todo_flags_finish */
!   'N'                                   /* letter */
  };
  
--- 2152,2158 ----
    0,                                    /* todo_flags_start */
    TODO_df_finish | TODO_verify_rtl_sharing |
    TODO_dump_func |
!   TODO_ggc_collect                      /* todo_flags_finish */
!  }
  };
  
Index: local-alloc.c
===================================================================
*** local-alloc.c	(revision 133313)
--- local-alloc.c	(working copy)
*************** rest_of_handle_local_alloc (void)
*** 2632,2639 ****
    return 0;
  }
  
! struct tree_opt_pass pass_local_alloc =
  {
    "lreg",                               /* name */
    NULL,                                 /* gate */
    rest_of_handle_local_alloc,           /* execute */
--- 2632,2641 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_local_alloc =
  {
+  {
+   RTL_PASS,
    "lreg",                               /* name */
    NULL,                                 /* gate */
    rest_of_handle_local_alloc,           /* execute */
*************** struct tree_opt_pass pass_local_alloc =
*** 2646,2652 ****
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_dump_func |
!   TODO_ggc_collect,                     /* todo_flags_finish */
!   'l'                                   /* letter */
  };
  
--- 2648,2654 ----
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_dump_func |
!   TODO_ggc_collect                      /* todo_flags_finish */
!  }
  };
  
Index: function.c
===================================================================
*** function.c	(revision 133313)
--- function.c	(working copy)
*************** instantiate_virtual_regs (void)
*** 1737,1744 ****
    return 0;
  }
  
! struct tree_opt_pass pass_instantiate_virtual_regs =
  {
    "vregs",                              /* name */
    NULL,                                 /* gate */
    instantiate_virtual_regs,             /* execute */
--- 1737,1746 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_instantiate_virtual_regs =
  {
+  {
+   RTL_PASS,
    "vregs",                              /* name */
    NULL,                                 /* gate */
    instantiate_virtual_regs,             /* execute */
*************** struct tree_opt_pass pass_instantiate_vi
*** 1750,1757 ****
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   TODO_dump_func,                       /* todo_flags_finish */
!   0                                     /* letter */
  };
  
  \f
--- 1752,1759 ----
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   TODO_dump_func                        /* todo_flags_finish */
!  }
  };
  
  \f
*************** init_function_for_compilation (void)
*** 4042,4049 ****
    return 0;
  }
  
! struct tree_opt_pass pass_init_function =
  {
    NULL,                                 /* name */
    NULL,                                 /* gate */   
    init_function_for_compilation,        /* execute */       
--- 4044,4053 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_init_function =
  {
+  {
+   RTL_PASS,
    NULL,                                 /* name */
    NULL,                                 /* gate */   
    init_function_for_compilation,        /* execute */       
*************** struct tree_opt_pass pass_init_function 
*** 4055,4062 ****
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   0,                                    /* todo_flags_finish */
!   0                                     /* letter */
  };
  
  
--- 4059,4066 ----
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   0                                     /* todo_flags_finish */
!  }
  };
  
  
*************** used_types_insert (tree t)
*** 5595,5602 ****
      used_types_insert_helper (t, cfun);
  }
  
! struct tree_opt_pass pass_leaf_regs =
  {
    NULL,                                 /* name */
    NULL,                                 /* gate */
    rest_of_handle_check_leaf_regs,       /* execute */
--- 5599,5608 ----
      used_types_insert_helper (t, cfun);
  }
  
! struct rtl_opt_pass pass_leaf_regs =
  {
+  {
+   RTL_PASS,
    NULL,                                 /* name */
    NULL,                                 /* gate */
    rest_of_handle_check_leaf_regs,       /* execute */
*************** struct tree_opt_pass pass_leaf_regs =
*** 5608,5615 ****
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   0,                                    /* todo_flags_finish */
!   0                                     /* letter */
  };
  
  static unsigned int
--- 5614,5621 ----
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   0                                     /* todo_flags_finish */
!  }
  };
  
  static unsigned int
*************** rest_of_handle_thread_prologue_and_epilo
*** 5626,5633 ****
    return 0;
  }
  
! struct tree_opt_pass pass_thread_prologue_and_epilogue =
  {
    "pro_and_epilogue",                   /* name */
    NULL,                                 /* gate */
    rest_of_handle_thread_prologue_and_epilogue, /* execute */
--- 5632,5641 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_thread_prologue_and_epilogue =
  {
+  {
+   RTL_PASS,
    "pro_and_epilogue",                   /* name */
    NULL,                                 /* gate */
    rest_of_handle_thread_prologue_and_epilogue, /* execute */
*************** struct tree_opt_pass pass_thread_prologu
*** 5642,5649 ****
    TODO_dump_func |
    TODO_df_verify |
    TODO_df_finish | TODO_verify_rtl_sharing |
!   TODO_ggc_collect,                     /* todo_flags_finish */
!   'w'                                   /* letter */
  };
  \f
  
--- 5650,5657 ----
    TODO_dump_func |
    TODO_df_verify |
    TODO_df_finish | TODO_verify_rtl_sharing |
!   TODO_ggc_collect                      /* todo_flags_finish */
!  }
  };
  \f
  
*************** rest_of_match_asm_constraints (void)
*** 5823,5830 ****
    return TODO_df_finish;
  }
  
! struct tree_opt_pass pass_match_asm_constraints =
  {
    "asmcons",				/* name */
    NULL,					/* gate */
    rest_of_match_asm_constraints,	/* execute */
--- 5831,5840 ----
    return TODO_df_finish;
  }
  
! struct rtl_opt_pass pass_match_asm_constraints =
  {
+  {
+   RTL_PASS,
    "asmcons",				/* name */
    NULL,					/* gate */
    rest_of_match_asm_constraints,	/* execute */
*************** struct tree_opt_pass pass_match_asm_cons
*** 5836,5843 ****
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func,                       /* todo_flags_finish */
!   0                                     /* letter */
  };
  
  
--- 5846,5853 ----
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func                       /* todo_flags_finish */
!  }
  };
  
  
Index: tree-vectorizer.c
===================================================================
*** tree-vectorizer.c	(revision 133313)
--- tree-vectorizer.c	(working copy)
*************** gate_increase_alignment (void)
*** 2767,2774 ****
    return flag_section_anchors && flag_tree_vectorize;
  }
  
! struct tree_opt_pass pass_ipa_increase_alignment = 
  {
    "increase_alignment",			/* name */
    gate_increase_alignment,		/* gate */
    increase_alignment,			/* execute */
--- 2767,2776 ----
    return flag_section_anchors && flag_tree_vectorize;
  }
  
! struct simple_ipa_opt_pass pass_ipa_increase_alignment = 
  {
+  {
+   SIMPLE_IPA_PASS,
    "increase_alignment",			/* name */
    gate_increase_alignment,		/* gate */
    increase_alignment,			/* execute */
*************** struct tree_opt_pass pass_ipa_increase_a
*** 2780,2785 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   0, 					/* todo_flags_finish */
!   0					/* letter */
  };
--- 2782,2787 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   0 					/* todo_flags_finish */
!  }
  };
Index: gcse.c
===================================================================
*** gcse.c	(revision 133313)
--- gcse.c	(working copy)
*************** rest_of_handle_jump_bypass (void)
*** 6691,6698 ****
    return 0;
  }
  
! struct tree_opt_pass pass_jump_bypass =
  {
    "bypass",                             /* name */
    gate_handle_jump_bypass,              /* gate */   
    rest_of_handle_jump_bypass,           /* execute */       
--- 6691,6700 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_jump_bypass =
  {
+  {
+   RTL_PASS,
    "bypass",                             /* name */
    gate_handle_jump_bypass,              /* gate */   
    rest_of_handle_jump_bypass,           /* execute */       
*************** struct tree_opt_pass pass_jump_bypass =
*** 6705,6712 ****
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_dump_func |
!   TODO_ggc_collect | TODO_verify_flow,  /* todo_flags_finish */
!   'G'                                   /* letter */
  };
  
  
--- 6707,6714 ----
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_dump_func |
!   TODO_ggc_collect | TODO_verify_flow   /* todo_flags_finish */
!  }
  };
  
  
*************** rest_of_handle_gcse (void)
*** 6760,6767 ****
    return 0;
  }
  
! struct tree_opt_pass pass_gcse =
  {
    "gcse1",                              /* name */
    gate_handle_gcse,                     /* gate */   
    rest_of_handle_gcse,			/* execute */       
--- 6762,6771 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_gcse =
  {
+  {
+   RTL_PASS,
    "gcse1",                              /* name */
    gate_handle_gcse,                     /* gate */   
    rest_of_handle_gcse,			/* execute */       
*************** struct tree_opt_pass pass_gcse =
*** 6775,6782 ****
    0,                                    /* todo_flags_start */
    TODO_df_finish | TODO_verify_rtl_sharing |
    TODO_dump_func |
!   TODO_verify_flow | TODO_ggc_collect,  /* todo_flags_finish */
!   'G'                                   /* letter */
  };
  
  
--- 6779,6786 ----
    0,                                    /* todo_flags_start */
    TODO_df_finish | TODO_verify_rtl_sharing |
    TODO_dump_func |
!   TODO_verify_flow | TODO_ggc_collect   /* todo_flags_finish */
!  }
  };
  
  
Index: ipa-type-escape.c
===================================================================
*** ipa-type-escape.c	(revision 133313)
--- ipa-type-escape.c	(working copy)
*************** gate_type_escape_vars (void)
*** 2196,2203 ****
  	  && !(errorcount || sorrycount));
  }
  
! struct tree_opt_pass pass_ipa_type_escape =
  {
    "type-escape-var",			/* name */
    gate_type_escape_vars,		/* gate */
    type_escape_execute,			/* execute */
--- 2196,2205 ----
  	  && !(errorcount || sorrycount));
  }
  
! struct simple_ipa_opt_pass pass_ipa_type_escape =
  {
+  {
+   SIMPLE_IPA_PASS,
    "type-escape-var",			/* name */
    gate_type_escape_vars,		/* gate */
    type_escape_execute,			/* execute */
*************** struct tree_opt_pass pass_ipa_type_escap
*** 2209,2215 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   0,                                    /* todo_flags_finish */
!   0					/* letter */
  };
  
--- 2211,2217 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   0                                     /* todo_flags_finish */
!  }
  };
  
Index: tree-if-conv.c
===================================================================
*** tree-if-conv.c	(revision 133313)
--- tree-if-conv.c	(working copy)
*************** gate_tree_if_conversion (void)
*** 1160,1167 ****
    return flag_tree_vectorize != 0;
  }
  
! struct tree_opt_pass pass_if_conversion =
  {
    "ifcvt",				/* name */
    gate_tree_if_conversion,		/* gate */
    main_tree_if_conversion,		/* execute */
--- 1160,1169 ----
    return flag_tree_vectorize != 0;
  }
  
! struct gimple_opt_pass pass_if_conversion =
  {
+  {
+   GIMPLE_PASS,
    "ifcvt",				/* name */
    gate_tree_if_conversion,		/* gate */
    main_tree_if_conversion,		/* execute */
*************** struct tree_opt_pass pass_if_conversion 
*** 1173,1179 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func | TODO_verify_loops | TODO_verify_stmts | TODO_verify_flow,	
                                          /* todo_flags_finish */
!   0					/* letter */
  };
--- 1175,1181 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func | TODO_verify_loops | TODO_verify_stmts | TODO_verify_flow
                                          /* todo_flags_finish */
!  }
  };
Index: init-regs.c
===================================================================
*** init-regs.c	(revision 133313)
--- init-regs.c	(working copy)
*************** rest_of_handle_initialize_regs (void)
*** 139,146 ****
    return 0;
  }
  
! struct tree_opt_pass pass_initialize_regs =
  {
    "init-regs",                          /* name */
    gate_initialize_regs,                 /* gate */
    rest_of_handle_initialize_regs,       /* execute */
--- 139,148 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_initialize_regs =
  {
+  {
+   RTL_PASS,
    "init-regs",                          /* name */
    gate_initialize_regs,                 /* gate */
    rest_of_handle_initialize_regs,       /* execute */
*************** struct tree_opt_pass pass_initialize_reg
*** 153,158 ****
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_dump_func |
!   TODO_df_finish,                       /* todo_flags_finish */
!   0                                     /* letter */
  };
--- 155,160 ----
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_dump_func |
!   TODO_df_finish                        /* todo_flags_finish */
!  }
  };
Index: ipa.c
===================================================================
*** ipa.c	(revision 133313)
--- ipa.c	(working copy)
*************** function_and_variable_visibility (void)
*** 278,285 ****
    return 0;
  }
  
! struct tree_opt_pass pass_ipa_function_and_variable_visibility = 
  {
    "visibility",				/* name */
    NULL,					/* gate */
    function_and_variable_visibility,	/* execute */
--- 278,287 ----
    return 0;
  }
  
! struct simple_ipa_opt_pass pass_ipa_function_and_variable_visibility = 
  {
+  {
+   SIMPLE_IPA_PASS,
    "visibility",				/* name */
    NULL,					/* gate */
    function_and_variable_visibility,	/* execute */
*************** struct tree_opt_pass pass_ipa_function_a
*** 291,296 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_remove_functions | TODO_dump_cgraph,/* todo_flags_finish */
!   0					/* letter */
  };
--- 293,298 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_remove_functions | TODO_dump_cgraph/* todo_flags_finish */
!  }
  };
Index: tree-ssa-phiopt.c
===================================================================
*** tree-ssa-phiopt.c	(revision 133313)
--- tree-ssa-phiopt.c	(working copy)
*************** gate_phiopt (void)
*** 1352,1359 ****
    return 1;
  }
  
! struct tree_opt_pass pass_phiopt =
  {
    "phiopt",				/* name */
    gate_phiopt,				/* gate */
    tree_ssa_phiopt,			/* execute */
--- 1352,1361 ----
    return 1;
  }
  
! struct gimple_opt_pass pass_phiopt =
  {
+  {
+   GIMPLE_PASS,
    "phiopt",				/* name */
    gate_phiopt,				/* gate */
    tree_ssa_phiopt,			/* execute */
*************** struct tree_opt_pass pass_phiopt =
*** 1369,1376 ****
      | TODO_ggc_collect
      | TODO_verify_ssa
      | TODO_verify_flow
!     | TODO_verify_stmts,		/* todo_flags_finish */
!   0					/* letter */
  };
  
  static bool
--- 1371,1378 ----
      | TODO_ggc_collect
      | TODO_verify_ssa
      | TODO_verify_flow
!     | TODO_verify_stmts	 		/* todo_flags_finish */
!  }
  };
  
  static bool
*************** gate_cselim (void)
*** 1379,1386 ****
    return flag_tree_cselim;
  }
  
! struct tree_opt_pass pass_cselim =
  {
    "cselim",				/* name */
    gate_cselim,				/* gate */
    tree_ssa_cs_elim,			/* execute */
--- 1381,1390 ----
    return flag_tree_cselim;
  }
  
! struct gimple_opt_pass pass_cselim =
  {
+  {
+   GIMPLE_PASS,
    "cselim",				/* name */
    gate_cselim,				/* gate */
    tree_ssa_cs_elim,			/* execute */
*************** struct tree_opt_pass pass_cselim =
*** 1396,1401 ****
      | TODO_ggc_collect
      | TODO_verify_ssa
      | TODO_verify_flow
!     | TODO_verify_stmts,		/* todo_flags_finish */
!   0					/* letter */
  };
--- 1400,1405 ----
      | TODO_ggc_collect
      | TODO_verify_ssa
      | TODO_verify_flow
!     | TODO_verify_stmts	 		/* todo_flags_finish */
!  }
  };
Index: rtl-factoring.c
===================================================================
*** rtl-factoring.c	(revision 133313)
--- rtl-factoring.c	(working copy)
*************** rest_of_rtl_seqabstr (void)
*** 1428,1434 ****
    return 0;
  }
  
! struct tree_opt_pass pass_rtl_seqabstr = {
    "seqabstr",                           /* name */
    gate_rtl_seqabstr,                    /* gate */
    rest_of_rtl_seqabstr,                 /* execute */
--- 1428,1437 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_rtl_seqabstr = 
! {
!  {
!   RTL_PASS,
    "seqabstr",                           /* name */
    gate_rtl_seqabstr,                    /* gate */
    rest_of_rtl_seqabstr,                 /* execute */
*************** struct tree_opt_pass pass_rtl_seqabstr =
*** 1442,1447 ****
    0,                                    /* todo_flags_start */
    TODO_df_finish | TODO_verify_rtl_sharing |
    TODO_dump_func |
!   TODO_ggc_collect,                     /* todo_flags_finish */
!   'Q'                                   /* letter */
  };
--- 1445,1450 ----
    0,                                    /* todo_flags_start */
    TODO_df_finish | TODO_verify_rtl_sharing |
    TODO_dump_func |
!   TODO_ggc_collect                      /* todo_flags_finish */
!  }
  };
Index: lower-subreg.c
===================================================================
*** lower-subreg.c	(revision 133313)
--- lower-subreg.c	(working copy)
*************** rest_of_handle_lower_subreg2 (void)
*** 1425,1432 ****
    return 0;
  }
  
! struct tree_opt_pass pass_lower_subreg =
  {
    "subreg",	                        /* name */
    gate_handle_lower_subreg,             /* gate */
    rest_of_handle_lower_subreg,          /* execute */
--- 1425,1434 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_lower_subreg =
  {
+  {
+   RTL_PASS,
    "subreg",	                        /* name */
    gate_handle_lower_subreg,             /* gate */
    rest_of_handle_lower_subreg,          /* execute */
*************** struct tree_opt_pass pass_lower_subreg =
*** 1440,1451 ****
    0,                                    /* todo_flags_start */
    TODO_dump_func |
    TODO_ggc_collect |
!   TODO_verify_flow,                     /* todo_flags_finish */
!   'u'                                   /* letter */
  };
  
! struct tree_opt_pass pass_lower_subreg2 =
  {
    "subreg2",	                        /* name */
    gate_handle_lower_subreg,             /* gate */
    rest_of_handle_lower_subreg2,          /* execute */
--- 1442,1455 ----
    0,                                    /* todo_flags_start */
    TODO_dump_func |
    TODO_ggc_collect |
!   TODO_verify_flow                      /* todo_flags_finish */
!  }
  };
  
! struct rtl_opt_pass pass_lower_subreg2 =
  {
+  {
+   RTL_PASS,
    "subreg2",	                        /* name */
    gate_handle_lower_subreg,             /* gate */
    rest_of_handle_lower_subreg2,          /* execute */
*************** struct tree_opt_pass pass_lower_subreg2 
*** 1460,1465 ****
    TODO_df_finish | TODO_verify_rtl_sharing |
    TODO_dump_func |
    TODO_ggc_collect |
!   TODO_verify_flow,                     /* todo_flags_finish */
!   'U'                                   /* letter */
  };
--- 1464,1469 ----
    TODO_df_finish | TODO_verify_rtl_sharing |
    TODO_dump_func |
    TODO_ggc_collect |
!   TODO_verify_flow                      /* todo_flags_finish */
!  }
  };
Index: bt-load.c
===================================================================
*** bt-load.c	(revision 133313)
--- bt-load.c	(working copy)
*************** rest_of_handle_branch_target_load_optimi
*** 1505,1512 ****
    return 0;
  }
  
! struct tree_opt_pass pass_branch_target_load_optimize1 =
  {
    "btl1",                               /* name */
    gate_handle_branch_target_load_optimize1,      /* gate */
    rest_of_handle_branch_target_load_optimize1,   /* execute */
--- 1505,1514 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_branch_target_load_optimize1 =
  {
+  {
+   RTL_PASS,
    "btl1",                               /* name */
    gate_handle_branch_target_load_optimize1,      /* gate */
    rest_of_handle_branch_target_load_optimize1,   /* execute */
*************** struct tree_opt_pass pass_branch_target_
*** 1521,1527 ****
    TODO_dump_func |
    TODO_verify_rtl_sharing |
    TODO_ggc_collect,                     /* todo_flags_finish */
!   'd'                                   /* letter */
  };
  
  static bool
--- 1523,1529 ----
    TODO_dump_func |
    TODO_verify_rtl_sharing |
    TODO_ggc_collect,                     /* todo_flags_finish */
!  }
  };
  
  static bool
*************** rest_of_handle_branch_target_load_optimi
*** 1553,1560 ****
    return 0;
  }
  
! struct tree_opt_pass pass_branch_target_load_optimize2 =
  {
    "btl2",                               /* name */
    gate_handle_branch_target_load_optimize2,      /* gate */
    rest_of_handle_branch_target_load_optimize2,   /* execute */
--- 1555,1564 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_branch_target_load_optimize2 =
  {
+  {
+   RTL_PASS,
    "btl2",                               /* name */
    gate_handle_branch_target_load_optimize2,      /* gate */
    rest_of_handle_branch_target_load_optimize2,   /* execute */
*************** struct tree_opt_pass pass_branch_target_
*** 1568,1573 ****
    0,                                    /* todo_flags_start */
    TODO_dump_func |
    TODO_ggc_collect,                     /* todo_flags_finish */
!   'd'                                   /* letter */
  };
  
--- 1572,1577 ----
    0,                                    /* todo_flags_start */
    TODO_dump_func |
    TODO_ggc_collect,                     /* todo_flags_finish */
!  }
  };
  
Index: tree-dfa.c
===================================================================
*** tree-dfa.c	(revision 133313)
--- tree-dfa.c	(working copy)
*************** find_referenced_vars (void)
*** 96,103 ****
    return 0;
  }
  
! struct tree_opt_pass pass_referenced_vars =
  {
    NULL,					/* name */
    NULL,					/* gate */
    find_referenced_vars,			/* execute */
--- 96,105 ----
    return 0;
  }
  
! struct gimple_opt_pass pass_referenced_vars =
  {
+  {
+   GIMPLE_PASS,
    NULL,					/* name */
    NULL,					/* gate */
    find_referenced_vars,			/* execute */
*************** struct tree_opt_pass pass_referenced_var
*** 109,116 ****
    PROP_referenced_vars,			/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   0,                                    /* todo_flags_finish */
!   0				        /* letter */
  };
  
  
--- 111,118 ----
    PROP_referenced_vars,			/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   0                                     /* todo_flags_finish */
!  }
  };
  
  
Index: except.c
===================================================================
*** except.c	(revision 133313)
--- except.c	(working copy)
*************** set_nothrow_function_flags (void)
*** 2843,2850 ****
    return 0;
  }
  
! struct tree_opt_pass pass_set_nothrow_function_flags =
  {
    NULL,                                 /* name */
    NULL,                                 /* gate */
    set_nothrow_function_flags,           /* execute */
--- 2843,2852 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_set_nothrow_function_flags =
  {
+  {
+   RTL_PASS,
    NULL,                                 /* name */
    NULL,                                 /* gate */
    set_nothrow_function_flags,           /* execute */
*************** struct tree_opt_pass pass_set_nothrow_fu
*** 2857,2863 ****
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    0,                                    /* todo_flags_finish */
!   0                                     /* letter */
  };
  
  \f
--- 2859,2865 ----
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    0,                                    /* todo_flags_finish */
!  }
  };
  
  \f
*************** convert_to_eh_region_ranges (void)
*** 3372,3379 ****
    return 0;
  }
  
! struct tree_opt_pass pass_convert_to_eh_region_ranges =
  {
    "eh-ranges",                          /* name */
    NULL,                                 /* gate */
    convert_to_eh_region_ranges,          /* execute */
--- 3374,3383 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_convert_to_eh_region_ranges =
  {
+  {
+   RTL_PASS,
    "eh-ranges",                          /* name */
    NULL,                                 /* gate */
    convert_to_eh_region_ranges,          /* execute */
*************** struct tree_opt_pass pass_convert_to_eh_
*** 3386,3392 ****
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_dump_func,			/* todo_flags_finish */
!   0                                     /* letter */
  };
  
  \f
--- 3390,3396 ----
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_dump_func,			/* todo_flags_finish */
!  }
  };
  
  \f
*************** rest_of_handle_eh (void)
*** 3995,4002 ****
    return 0;
  }
  
! struct tree_opt_pass pass_rtl_eh =
  {
    "eh",                                 /* name */
    gate_handle_eh,                       /* gate */
    rest_of_handle_eh,			/* execute */
--- 3999,4008 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_rtl_eh =
  {
+  {
+   RTL_PASS,
    "eh",                                 /* name */
    gate_handle_eh,                       /* gate */
    rest_of_handle_eh,			/* execute */
*************** struct tree_opt_pass pass_rtl_eh =
*** 4008,4015 ****
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   TODO_dump_func,                       /* todo_flags_finish */
!   'h'                                   /* letter */
  };
  
  #include "gt-except.h"
--- 4014,4021 ----
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   TODO_dump_func                        /* todo_flags_finish */
!  }
  };
  
  #include "gt-except.h"
Index: emit-rtl.c
===================================================================
*** emit-rtl.c	(revision 133313)
--- emit-rtl.c	(working copy)
*************** unshare_all_rtl (void)
*** 2181,2188 ****
    return 0;
  }
  
! struct tree_opt_pass pass_unshare_all_rtl =
  {
    "unshare",                            /* name */
    NULL,                                 /* gate */
    unshare_all_rtl,                      /* execute */
--- 2181,2190 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_unshare_all_rtl =
  {
+  {
+   RTL_PASS,
    "unshare",                            /* name */
    NULL,                                 /* gate */
    unshare_all_rtl,                      /* execute */
*************** struct tree_opt_pass pass_unshare_all_rt
*** 2194,2201 ****
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   TODO_dump_func | TODO_verify_rtl_sharing, /* todo_flags_finish */
!   0                                     /* letter */
  };
  
  
--- 2196,2203 ----
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   TODO_dump_func | TODO_verify_rtl_sharing /* todo_flags_finish */
!  }
  };
  
  
Index: cfgexpand.c
===================================================================
*** cfgexpand.c	(revision 133313)
--- cfgexpand.c	(working copy)
*************** tree_expand_cfg (void)
*** 1986,1993 ****
    return 0;
  }
  
! struct tree_opt_pass pass_expand =
  {
    "expand",				/* name */
    NULL,                                 /* gate */
    tree_expand_cfg,			/* execute */
--- 1986,1995 ----
    return 0;
  }
  
! struct gimple_opt_pass pass_expand =
  {
+  {
+   GIMPLE_PASS,
    "expand",				/* name */
    NULL,                                 /* gate */
    tree_expand_cfg,			/* execute */
*************** struct tree_opt_pass pass_expand =
*** 2001,2005 ****
    PROP_trees,				/* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_dump_func,                       /* todo_flags_finish */
!   'r'					/* letter */
  };
--- 2003,2007 ----
    PROP_trees,				/* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_dump_func,                       /* todo_flags_finish */
!  }
  };
Index: tree-cfgcleanup.c
===================================================================
*** tree-cfgcleanup.c	(revision 133313)
--- tree-cfgcleanup.c	(working copy)
*************** gate_merge_phi (void)
*** 930,936 ****
    return 1;
  }
  
! struct tree_opt_pass pass_merge_phi = {
    "mergephi",			/* name */
    gate_merge_phi,		/* gate */
    merge_phi_nodes,		/* execute */
--- 930,939 ----
    return 1;
  }
  
! struct gimple_opt_pass pass_merge_phi = 
! {
!  {
!   GIMPLE_PASS,
    "mergephi",			/* name */
    gate_merge_phi,		/* gate */
    merge_phi_nodes,		/* execute */
*************** struct tree_opt_pass pass_merge_phi = {
*** 943,948 ****
    0,				/* properties_destroyed */
    0,				/* todo_flags_start */
    TODO_dump_func | TODO_ggc_collect	/* todo_flags_finish */
!   | TODO_verify_ssa,
!   0				/* letter */
  };
--- 946,951 ----
    0,				/* properties_destroyed */
    0,				/* todo_flags_start */
    TODO_dump_func | TODO_ggc_collect	/* todo_flags_finish */
!   | TODO_verify_ssa
!  }
  };
Index: cfgcleanup.c
===================================================================
*** cfgcleanup.c	(revision 133313)
--- cfgcleanup.c	(working copy)
*************** rest_of_handle_jump (void)
*** 2181,2188 ****
    return 0;
  }
  
! struct tree_opt_pass pass_jump =
  {
    "sibling",                            /* name */
    NULL,                                 /* gate */
    rest_of_handle_jump,			/* execute */
--- 2181,2190 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_jump =
  {
+  {
+   RTL_PASS,
    "sibling",                            /* name */
    NULL,                                 /* gate */
    rest_of_handle_jump,			/* execute */
*************** struct tree_opt_pass pass_jump =
*** 2195,2201 ****
    0,                                    /* properties_destroyed */
    TODO_ggc_collect,                     /* todo_flags_start */
    TODO_verify_flow,                     /* todo_flags_finish */
!   'i'                                   /* letter */
  };
  
  
--- 2197,2203 ----
    0,                                    /* properties_destroyed */
    TODO_ggc_collect,                     /* todo_flags_start */
    TODO_verify_flow,                     /* todo_flags_finish */
!  }
  };
  
  
*************** rest_of_handle_jump2 (void)
*** 2211,2218 ****
  }
  
  
! struct tree_opt_pass pass_jump2 =
  {
    "jump",                               /* name */
    NULL,                                 /* gate */
    rest_of_handle_jump2,			/* execute */
--- 2213,2222 ----
  }
  
  
! struct rtl_opt_pass pass_jump2 =
  {
+  {
+   RTL_PASS,
    "jump",                               /* name */
    NULL,                                 /* gate */
    rest_of_handle_jump2,			/* execute */
*************** struct tree_opt_pass pass_jump2 =
*** 2225,2231 ****
    0,                                    /* properties_destroyed */
    TODO_ggc_collect,                     /* todo_flags_start */
    TODO_dump_func | TODO_verify_rtl_sharing,/* todo_flags_finish */
!   'j'                                   /* letter */
  };
  
  
--- 2229,2235 ----
    0,                                    /* properties_destroyed */
    TODO_ggc_collect,                     /* todo_flags_start */
    TODO_dump_func | TODO_verify_rtl_sharing,/* todo_flags_finish */
!  }
  };
  
  
Index: tree-ssa-pre.c
===================================================================
*** tree-ssa-pre.c	(revision 133313)
--- tree-ssa-pre.c	(working copy)
*************** gate_pre (void)
*** 4016,4023 ****
    return flag_tree_pre != 0;
  }
  
! struct tree_opt_pass pass_pre =
  {
    "pre",				/* name */
    gate_pre,				/* gate */
    do_pre,				/* execute */
--- 4016,4025 ----
    return flag_tree_pre != 0;
  }
  
! struct gimple_opt_pass pass_pre =
  {
+  {
+   GIMPLE_PASS,
    "pre",				/* name */
    gate_pre,				/* gate */
    do_pre,				/* execute */
*************** struct tree_opt_pass pass_pre =
*** 4031,4038 ****
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
    TODO_update_ssa_only_virtuals | TODO_dump_func | TODO_ggc_collect
!   | TODO_verify_ssa, /* todo_flags_finish */
!   0					/* letter */
  };
  
  
--- 4033,4040 ----
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
    TODO_update_ssa_only_virtuals | TODO_dump_func | TODO_ggc_collect
!   | TODO_verify_ssa /* todo_flags_finish */
!  }
  };
  
  
*************** gate_fre (void)
*** 4051,4058 ****
    return flag_tree_fre != 0;
  }
  
! struct tree_opt_pass pass_fre =
  {
    "fre",				/* name */
    gate_fre,				/* gate */
    execute_fre,				/* execute */
--- 4053,4062 ----
    return flag_tree_fre != 0;
  }
  
! struct gimple_opt_pass pass_fre =
  {
+  {
+   GIMPLE_PASS,
    "fre",				/* name */
    gate_fre,				/* gate */
    execute_fre,				/* execute */
*************** struct tree_opt_pass pass_fre =
*** 4064,4069 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func | TODO_ggc_collect | TODO_verify_ssa, /* todo_flags_finish */
!   0					/* letter */
  };
--- 4068,4073 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func | TODO_ggc_collect | TODO_verify_ssa /* todo_flags_finish */
!  }
  };
Index: tree-sra.c
===================================================================
*** tree-sra.c	(revision 133313)
--- tree-sra.c	(working copy)
*************** gate_sra (void)
*** 3680,3687 ****
    return flag_tree_sra != 0;
  }
  
! struct tree_opt_pass pass_sra_early =
  {
    "esra",				/* name */
    gate_sra,				/* gate */
    tree_sra_early,			/* execute */
--- 3680,3689 ----
    return flag_tree_sra != 0;
  }
  
! struct gimple_opt_pass pass_sra_early =
  {
+  {
+   GIMPLE_PASS,
    "esra",				/* name */
    gate_sra,				/* gate */
    tree_sra_early,			/* execute */
*************** struct tree_opt_pass pass_sra_early =
*** 3696,3707 ****
    TODO_dump_func
    | TODO_update_ssa
    | TODO_ggc_collect
!   | TODO_verify_ssa,			/* todo_flags_finish */
!   0					/* letter */
  };
  
! struct tree_opt_pass pass_sra =
  {
    "sra",				/* name */
    gate_sra,				/* gate */
    tree_sra,				/* execute */
--- 3698,3711 ----
    TODO_dump_func
    | TODO_update_ssa
    | TODO_ggc_collect
!   | TODO_verify_ssa			/* todo_flags_finish */
!  }
  };
  
! struct gimple_opt_pass pass_sra =
  {
+  {
+   GIMPLE_PASS,
    "sra",				/* name */
    gate_sra,				/* gate */
    tree_sra,				/* execute */
*************** struct tree_opt_pass pass_sra =
*** 3716,3721 ****
    TODO_dump_func
    | TODO_update_ssa
    | TODO_ggc_collect
!   | TODO_verify_ssa,			/* todo_flags_finish */
!   0					/* letter */
  };
--- 3720,3725 ----
    TODO_dump_func
    | TODO_update_ssa
    | TODO_ggc_collect
!   | TODO_verify_ssa			/* todo_flags_finish */
!  }
  };
Index: tree-mudflap.c
===================================================================
*** tree-mudflap.c	(revision 133313)
--- tree-mudflap.c	(working copy)
*************** gate_mudflap (void)
*** 1303,1310 ****
    return flag_mudflap != 0;
  }
  
! struct tree_opt_pass pass_mudflap_1 = 
  {
    "mudflap1",                           /* name */
    gate_mudflap,                         /* gate */
    execute_mudflap_function_decls,       /* execute */
--- 1303,1312 ----
    return flag_mudflap != 0;
  }
  
! struct gimple_opt_pass pass_mudflap_1 = 
  {
+  {
+   GIMPLE_PASS,
    "mudflap1",                           /* name */
    gate_mudflap,                         /* gate */
    execute_mudflap_function_decls,       /* execute */
*************** struct tree_opt_pass pass_mudflap_1 = 
*** 1316,1327 ****
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   TODO_dump_func,                       /* todo_flags_finish */
!   0					/* letter */
  };
  
! struct tree_opt_pass pass_mudflap_2 = 
  {
    "mudflap2",                           /* name */
    gate_mudflap,                         /* gate */
    execute_mudflap_function_ops,         /* execute */
--- 1318,1331 ----
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   TODO_dump_func                        /* todo_flags_finish */
!  }
  };
  
! struct gimple_opt_pass pass_mudflap_2 = 
  {
+  {
+   GIMPLE_PASS,
    "mudflap2",                           /* name */
    gate_mudflap,                         /* gate */
    execute_mudflap_function_ops,         /* execute */
*************** struct tree_opt_pass pass_mudflap_2 = 
*** 1334,1341 ****
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_verify_flow | TODO_verify_stmts
!   | TODO_dump_func,                     /* todo_flags_finish */
!   0					/* letter */
  };
  
  #include "gt-tree-mudflap.h"
--- 1338,1345 ----
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_verify_flow | TODO_verify_stmts
!   | TODO_dump_func                      /* todo_flags_finish */
!  }
  };
  
  #include "gt-tree-mudflap.h"
Index: tree-ssa-copy.c
===================================================================
*** tree-ssa-copy.c	(revision 133313)
--- tree-ssa-copy.c	(working copy)
*************** gate_copy_prop (void)
*** 1062,1069 ****
    return flag_tree_copy_prop != 0;
  }
  
! struct tree_opt_pass pass_copy_prop =
  {
    "copyprop",				/* name */
    gate_copy_prop,			/* gate */
    execute_copy_prop,			/* execute */
--- 1062,1071 ----
    return flag_tree_copy_prop != 0;
  }
  
! struct gimple_opt_pass pass_copy_prop =
  {
+  {
+   GIMPLE_PASS,
    "copyprop",				/* name */
    gate_copy_prop,			/* gate */
    execute_copy_prop,			/* execute */
*************** struct tree_opt_pass pass_copy_prop =
*** 1079,1085 ****
      | TODO_dump_func
      | TODO_ggc_collect
      | TODO_verify_ssa
!     | TODO_update_ssa,			/* todo_flags_finish */
!   0					/* letter */
  };
  
--- 1081,1087 ----
      | TODO_dump_func
      | TODO_ggc_collect
      | TODO_verify_ssa
!     | TODO_update_ssa			/* todo_flags_finish */
!  }
  };
  
Index: cfglayout.c
===================================================================
*** cfglayout.c	(revision 133313)
--- cfglayout.c	(working copy)
*************** outof_cfg_layout_mode (void)
*** 340,347 ****
    return 0;
  }
  
! struct tree_opt_pass pass_into_cfg_layout_mode =
  {
    "into_cfglayout",                     /* name */
    NULL,                                 /* gate */
    into_cfg_layout_mode,                 /* execute */
--- 340,349 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_into_cfg_layout_mode =
  {
+  {
+   RTL_PASS,
    "into_cfglayout",                     /* name */
    NULL,                                 /* gate */
    into_cfg_layout_mode,                 /* execute */
*************** struct tree_opt_pass pass_into_cfg_layou
*** 354,364 ****
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_dump_func,                       /* todo_flags_finish */
!   0                                     /* letter */
  };
  
! struct tree_opt_pass pass_outof_cfg_layout_mode =
  {
    "outof_cfglayout",                    /* name */
    NULL,                                 /* gate */
    outof_cfg_layout_mode,                /* execute */
--- 356,368 ----
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_dump_func,                       /* todo_flags_finish */
!  }
  };
  
! struct rtl_opt_pass pass_outof_cfg_layout_mode =
  {
+  {
+   RTL_PASS,
    "outof_cfglayout",                    /* name */
    NULL,                                 /* gate */
    outof_cfg_layout_mode,                /* execute */
*************** struct tree_opt_pass pass_outof_cfg_layo
*** 371,377 ****
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_dump_func,                       /* todo_flags_finish */
!   0                                     /* letter */
  };
  \f
  /* Return sope resulting from combination of S1 and S2.  */
--- 375,381 ----
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_dump_func,                       /* todo_flags_finish */
!  }
  };
  \f
  /* Return sope resulting from combination of S1 and S2.  */
Index: tree-ssa-forwprop.c
===================================================================
*** tree-ssa-forwprop.c	(revision 133313)
--- tree-ssa-forwprop.c	(working copy)
*************** gate_forwprop (void)
*** 1063,1069 ****
    return 1;
  }
  
! struct tree_opt_pass pass_forwprop = {
    "forwprop",			/* name */
    gate_forwprop,		/* gate */
    tree_ssa_forward_propagate_single_use_vars,	/* execute */
--- 1063,1072 ----
    return 1;
  }
  
! struct gimple_opt_pass pass_forwprop = 
! {
!  {
!   GIMPLE_PASS,
    "forwprop",			/* name */
    gate_forwprop,		/* gate */
    tree_ssa_forward_propagate_single_use_vars,	/* execute */
*************** struct tree_opt_pass pass_forwprop = {
*** 1078,1084 ****
    TODO_dump_func
    | TODO_ggc_collect
    | TODO_update_ssa
!   | TODO_verify_ssa,		/* todo_flags_finish */
!   0				/* letter */
  };
  
--- 1081,1087 ----
    TODO_dump_func
    | TODO_ggc_collect
    | TODO_update_ssa
!   | TODO_verify_ssa		/* todo_flags_finish */
!  }
  };
  
Index: tree-ssa-dce.c
===================================================================
*** tree-ssa-dce.c	(revision 133313)
--- tree-ssa-dce.c	(working copy)
*************** gate_dce (void)
*** 901,908 ****
    return flag_tree_dce != 0;
  }
  
! struct tree_opt_pass pass_dce =
  {
    "dce",				/* name */
    gate_dce,				/* gate */
    tree_ssa_dce,				/* execute */
--- 901,910 ----
    return flag_tree_dce != 0;
  }
  
! struct gimple_opt_pass pass_dce =
  {
+  {
+   GIMPLE_PASS,
    "dce",				/* name */
    gate_dce,				/* gate */
    tree_ssa_dce,				/* execute */
*************** struct tree_opt_pass pass_dce =
*** 914,925 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func | TODO_verify_ssa,	/* todo_flags_finish */
!   0					/* letter */
  };
  
! struct tree_opt_pass pass_dce_loop =
  {
    "dceloop",				/* name */
    gate_dce,				/* gate */
    tree_ssa_dce_loop,			/* execute */
--- 916,929 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func | TODO_verify_ssa	/* todo_flags_finish */
!  }
  };
  
! struct gimple_opt_pass pass_dce_loop =
  {
+  {
+   GIMPLE_PASS,
    "dceloop",				/* name */
    gate_dce,				/* gate */
    tree_ssa_dce_loop,			/* execute */
*************** struct tree_opt_pass pass_dce_loop =
*** 931,942 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func | TODO_verify_ssa,	/* todo_flags_finish */
!   0					/* letter */
  };
  
! struct tree_opt_pass pass_cd_dce =
  {
    "cddce",				/* name */
    gate_dce,				/* gate */
    tree_ssa_cd_dce,			/* execute */
--- 935,948 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func | TODO_verify_ssa	/* todo_flags_finish */
!  }
  };
  
! struct gimple_opt_pass pass_cd_dce =
  {
+  {
+   GIMPLE_PASS,
    "cddce",				/* name */
    gate_dce,				/* gate */
    tree_ssa_cd_dce,			/* execute */
*************** struct tree_opt_pass pass_cd_dce =
*** 949,954 ****
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
    TODO_dump_func | TODO_verify_ssa
!   | TODO_verify_flow,			/* todo_flags_finish */
!   0					/* letter */
  };
--- 955,960 ----
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
    TODO_dump_func | TODO_verify_ssa
!   | TODO_verify_flow			/* todo_flags_finish */
!  }
  };
Index: tree-ssa.c
===================================================================
*** tree-ssa.c	(revision 133313)
--- tree-ssa.c	(working copy)
*************** gate_warn_uninitialized (void)
*** 1512,1519 ****
    return warn_uninitialized != 0;
  }
  
! struct tree_opt_pass pass_early_warn_uninitialized =
  {
    NULL,					/* name */
    gate_warn_uninitialized,		/* gate */
    execute_early_warn_uninitialized,	/* execute */
--- 1512,1521 ----
    return warn_uninitialized != 0;
  }
  
! struct gimple_opt_pass pass_early_warn_uninitialized =
  {
+  {
+   GIMPLE_PASS,
    NULL,					/* name */
    gate_warn_uninitialized,		/* gate */
    execute_early_warn_uninitialized,	/* execute */
*************** struct tree_opt_pass pass_early_warn_uni
*** 1525,1536 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   0,                                    /* todo_flags_finish */
!   0				        /* letter */
  };
  
! struct tree_opt_pass pass_late_warn_uninitialized =
  {
    NULL,					/* name */
    gate_warn_uninitialized,		/* gate */
    execute_late_warn_uninitialized,	/* execute */
--- 1527,1540 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   0                                     /* todo_flags_finish */
!  }
  };
  
! struct gimple_opt_pass pass_late_warn_uninitialized =
  {
+  {
+   GIMPLE_PASS,
    NULL,					/* name */
    gate_warn_uninitialized,		/* gate */
    execute_late_warn_uninitialized,	/* execute */
*************** struct tree_opt_pass pass_late_warn_unin
*** 1542,1549 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   0,                                    /* todo_flags_finish */
!   0				        /* letter */
  };
  
  /* Compute TREE_ADDRESSABLE for local variables.  */
--- 1546,1553 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   0                                     /* todo_flags_finish */
!  }
  };
  
  /* Compute TREE_ADDRESSABLE for local variables.  */
*************** execute_update_addresses_taken (void)
*** 1625,1632 ****
    return 0;
  }
  
! struct tree_opt_pass pass_update_address_taken =
  {
    "addressables",			/* name */
    NULL,					/* gate */
    execute_update_addresses_taken,	/* execute */
--- 1629,1638 ----
    return 0;
  }
  
! struct gimple_opt_pass pass_update_address_taken =
  {
+  {
+   GIMPLE_PASS,
    "addressables",			/* name */
    NULL,					/* gate */
    execute_update_addresses_taken,	/* execute */
*************** struct tree_opt_pass pass_update_address
*** 1638,1643 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_update_ssa,                      /* todo_flags_finish */
!   0				        /* letter */
  };
--- 1644,1649 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_update_ssa                       /* todo_flags_finish */
!  }
  };
Index: regclass.c
===================================================================
*** regclass.c	(revision 133313)
--- regclass.c	(working copy)
*************** regclass_init (void)
*** 1059,1066 ****
    return 1;
  }
  
! struct tree_opt_pass pass_regclass_init =
  {
    "regclass",                           /* name */
    NULL,                                 /* gate */
    regclass_init,                        /* execute */
--- 1059,1068 ----
    return 1;
  }
  
! struct rtl_opt_pass pass_regclass_init =
  {
+  {
+   RTL_PASS,
    "regclass",                           /* name */
    NULL,                                 /* gate */
    regclass_init,                        /* execute */
*************** struct tree_opt_pass pass_regclass_init 
*** 1072,1079 ****
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   0,                                    /* todo_flags_finish */
!   'k'                                   /* letter */
  };
  
  
--- 1074,1081 ----
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   0                                     /* todo_flags_finish */
!  }
  };
  
  
*************** gate_subregs_of_mode_init (void)
*** 2670,2677 ****
  #endif
  }
  
! struct tree_opt_pass pass_subregs_of_mode_init =
  {
    "subregs_of_mode_init",               /* name */
    gate_subregs_of_mode_init,            /* gate */
    init_subregs_of_mode,                 /* execute */
--- 2672,2681 ----
  #endif
  }
  
! struct rtl_opt_pass pass_subregs_of_mode_init =
  {
+  {
+   RTL_PASS,
    "subregs_of_mode_init",               /* name */
    gate_subregs_of_mode_init,            /* gate */
    init_subregs_of_mode,                 /* execute */
*************** struct tree_opt_pass pass_subregs_of_mod
*** 2683,2694 ****
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   0,                                    /* todo_flags_finish */
!   0                                     /* letter */
  };
  
! struct tree_opt_pass pass_subregs_of_mode_finish =
  {
    "subregs_of_mode_finish",               /* name */
    gate_subregs_of_mode_init,            /* gate */
    finish_subregs_of_mode,               /* execute */
--- 2687,2700 ----
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   0                                     /* todo_flags_finish */
!  }
  };
  
! struct rtl_opt_pass pass_subregs_of_mode_finish =
  {
+  {
+   RTL_PASS,
    "subregs_of_mode_finish",               /* name */
    gate_subregs_of_mode_init,            /* gate */
    finish_subregs_of_mode,               /* execute */
*************** struct tree_opt_pass pass_subregs_of_mod
*** 2700,2707 ****
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   0,                                    /* todo_flags_finish */
!   0                                     /* letter */
  };
  
  
--- 2706,2713 ----
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   0                                     /* todo_flags_finish */
!  }
  };
  
  
Index: integrate.c
===================================================================
*** integrate.c	(revision 133313)
--- integrate.c	(working copy)
*************** emit_initial_value_sets (void)
*** 298,305 ****
    return 0;
  }
  
! struct tree_opt_pass pass_initial_value_sets =
  {
    "initvals",                           /* name */
    NULL,                                 /* gate */
    emit_initial_value_sets,              /* execute */
--- 298,307 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_initial_value_sets =
  {
+  {
+   RTL_PASS,
    "initvals",                           /* name */
    NULL,                                 /* gate */
    emit_initial_value_sets,              /* execute */
*************** struct tree_opt_pass pass_initial_value_
*** 311,318 ****
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   TODO_dump_func,                       /* todo_flags_finish */
!   0                                     /* letter */
  };
  
  /* If the backend knows where to allocate pseudos for hard
--- 313,320 ----
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   TODO_dump_func                        /* todo_flags_finish */
!  }
  };
  
  /* If the backend knows where to allocate pseudos for hard
Index: tree-optimize.c
===================================================================
*** tree-optimize.c	(revision 133313)
--- tree-optimize.c	(working copy)
*************** gate_all_optimizations (void)
*** 61,68 ****
  	  && (!(errorcount || sorrycount) || gimple_in_ssa_p (cfun)));
  }
  
! struct tree_opt_pass pass_all_optimizations =
  {
    NULL,					/* name */
    gate_all_optimizations,		/* gate */
    NULL,					/* execute */
--- 61,70 ----
  	  && (!(errorcount || sorrycount) || gimple_in_ssa_p (cfun)));
  }
  
! struct gimple_opt_pass pass_all_optimizations =
  {
+  {
+   GIMPLE_PASS,
    NULL,					/* name */
    gate_all_optimizations,		/* gate */
    NULL,					/* execute */
*************** struct tree_opt_pass pass_all_optimizati
*** 74,81 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   0,					/* todo_flags_finish */
!   0					/* letter */
  };
  
  /* Gate: execute, or not, all of the non-trivial optimizations.  */
--- 76,83 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   0					/* todo_flags_finish */
!  }
  };
  
  /* Gate: execute, or not, all of the non-trivial optimizations.  */
*************** gate_all_early_local_passes (void)
*** 87,94 ****
    return (!errorcount && !sorrycount);
  }
  
! struct tree_opt_pass pass_early_local_passes =
  {
    "early_local_cleanups",		/* name */
    gate_all_early_local_passes,		/* gate */
    NULL,					/* execute */
--- 89,98 ----
    return (!errorcount && !sorrycount);
  }
  
! struct simple_ipa_opt_pass pass_early_local_passes =
  {
+  {
+   SIMPLE_IPA_PASS,
    "early_local_cleanups",		/* name */
    gate_all_early_local_passes,		/* gate */
    NULL,					/* execute */
*************** struct tree_opt_pass pass_early_local_pa
*** 100,107 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_remove_functions,		/* todo_flags_finish */
!   0					/* letter */
  };
  
  static unsigned int
--- 104,111 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_remove_functions	 		/* todo_flags_finish */
!  }
  };
  
  static unsigned int
*************** gate_all_early_optimizations (void)
*** 122,129 ****
  	  && !(errorcount || sorrycount));
  }
  
! struct tree_opt_pass pass_all_early_optimizations =
  {
    "early_optimizations",		/* name */
    gate_all_early_optimizations,		/* gate */
    execute_early_local_optimizations,	/* execute */
--- 126,135 ----
  	  && !(errorcount || sorrycount));
  }
  
! struct gimple_opt_pass pass_all_early_optimizations =
  {
+  {
+   GIMPLE_PASS,
    "early_optimizations",		/* name */
    gate_all_early_optimizations,		/* gate */
    execute_early_local_optimizations,	/* execute */
*************** struct tree_opt_pass pass_all_early_opti
*** 135,142 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   0,					/* todo_flags_finish */
!   0					/* letter */
  };
  
  /* Pass: cleanup the CFG just before expanding trees to RTL.
--- 141,148 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   0					/* todo_flags_finish */
!  }
  };
  
  /* Pass: cleanup the CFG just before expanding trees to RTL.
*************** execute_cleanup_cfg_pre_ipa (void)
*** 151,158 ****
    return 0;
  }
  
! struct tree_opt_pass pass_cleanup_cfg =
  {
    "cleanup_cfg",			/* name */
    NULL,					/* gate */
    execute_cleanup_cfg_pre_ipa,		/* execute */
--- 157,166 ----
    return 0;
  }
  
! struct gimple_opt_pass pass_cleanup_cfg =
  {
+  {
+   GIMPLE_PASS,
    "cleanup_cfg",			/* name */
    NULL,					/* gate */
    execute_cleanup_cfg_pre_ipa,		/* execute */
*************** struct tree_opt_pass pass_cleanup_cfg =
*** 164,171 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func,					/* todo_flags_finish */
!   0					/* letter */
  };
  
  
--- 172,179 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func			/* todo_flags_finish */
!  }
  };
  
  
*************** execute_cleanup_cfg_post_optimizing (voi
*** 184,191 ****
    return 0;
  }
  
! struct tree_opt_pass pass_cleanup_cfg_post_optimizing =
  {
    "final_cleanup",			/* name */
    NULL,					/* gate */
    execute_cleanup_cfg_post_optimizing,	/* execute */
--- 192,201 ----
    return 0;
  }
  
! struct gimple_opt_pass pass_cleanup_cfg_post_optimizing =
  {
+  {
+   GIMPLE_PASS,
    "final_cleanup",			/* name */
    NULL,					/* gate */
    execute_cleanup_cfg_post_optimizing,	/* execute */
*************** struct tree_opt_pass pass_cleanup_cfg_po
*** 197,204 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func,					/* todo_flags_finish */
!   0					/* letter */
  };
  
  /* Pass: do the actions required to finish with tree-ssa optimization
--- 207,214 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func			/* todo_flags_finish */
!  }
  };
  
  /* Pass: do the actions required to finish with tree-ssa optimization
*************** execute_free_datastructures (void)
*** 216,223 ****
    return 0;
  }
  
! struct tree_opt_pass pass_free_datastructures =
  {
    NULL,					/* name */
    NULL,					/* gate */
    execute_free_datastructures,			/* execute */
--- 226,235 ----
    return 0;
  }
  
! struct gimple_opt_pass pass_free_datastructures =
  {
+  {
+   GIMPLE_PASS,
    NULL,					/* name */
    NULL,					/* gate */
    execute_free_datastructures,			/* execute */
*************** struct tree_opt_pass pass_free_datastruc
*** 229,236 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   0,					/* todo_flags_finish */
!   0					/* letter */
  };
  /* Pass: free cfg annotations.  */
  
--- 241,248 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   0					/* todo_flags_finish */
!  }
  };
  /* Pass: free cfg annotations.  */
  
*************** execute_free_cfg_annotations (void)
*** 243,250 ****
    return 0;
  }
  
! struct tree_opt_pass pass_free_cfg_annotations =
  {
    NULL,					/* name */
    NULL,					/* gate */
    execute_free_cfg_annotations,		/* execute */
--- 255,264 ----
    return 0;
  }
  
! struct gimple_opt_pass pass_free_cfg_annotations =
  {
+  {
+   GIMPLE_PASS,
    NULL,					/* name */
    NULL,					/* gate */
    execute_free_cfg_annotations,		/* execute */
*************** struct tree_opt_pass pass_free_cfg_annot
*** 256,263 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   0,					/* todo_flags_finish */
!   0					/* letter */
  };
  
  /* Pass: fixup_cfg.  IPA passes, compilation of earlier functions or inlining
--- 270,277 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   0					/* todo_flags_finish */
!  }
  };
  
  /* Pass: fixup_cfg.  IPA passes, compilation of earlier functions or inlining
*************** gate_init_datastructures (void)
*** 330,337 ****
    return (optimize >= 1);
  }
  
! struct tree_opt_pass pass_init_datastructures =
  {
    NULL,					/* name */
    gate_init_datastructures,		/* gate */
    execute_init_datastructures,		/* execute */
--- 344,353 ----
    return (optimize >= 1);
  }
  
! struct gimple_opt_pass pass_init_datastructures =
  {
+  {
+   GIMPLE_PASS,
    NULL,					/* name */
    gate_init_datastructures,		/* gate */
    execute_init_datastructures,		/* execute */
*************** struct tree_opt_pass pass_init_datastruc
*** 343,350 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   0,					/* todo_flags_finish */
!   0					/* letter */
  };
  
  void
--- 359,366 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   0					/* todo_flags_finish */
!  }
  };
  
  void
*************** tree_lowering_passes (tree fn)
*** 358,364 ****
    bitmap_obstack_initialize (NULL);
    execute_pass_list (all_lowering_passes);
    if (optimize && cgraph_global_info_ready)
!     execute_pass_list (pass_early_local_passes.sub);
    free_dominance_info (CDI_POST_DOMINATORS);
    free_dominance_info (CDI_DOMINATORS);
    compact_blocks ();
--- 374,380 ----
    bitmap_obstack_initialize (NULL);
    execute_pass_list (all_lowering_passes);
    if (optimize && cgraph_global_info_ready)
!     execute_pass_list (pass_early_local_passes.pass.sub);
    free_dominance_info (CDI_POST_DOMINATORS);
    free_dominance_info (CDI_DOMINATORS);
    compact_blocks ();
Index: tree-ssa-phiprop.c
===================================================================
*** tree-ssa-phiprop.c	(revision 133313)
--- tree-ssa-phiprop.c	(working copy)
*************** gate_phiprop (void)
*** 368,374 ****
    return 1;
  }
  
! struct tree_opt_pass pass_phiprop = {
    "phiprop",			/* name */
    gate_phiprop,			/* gate */
    tree_ssa_phiprop,		/* execute */
--- 368,377 ----
    return 1;
  }
  
! struct gimple_opt_pass pass_phiprop = 
! {
!  {
!   GIMPLE_PASS,
    "phiprop",			/* name */
    gate_phiprop,			/* gate */
    tree_ssa_phiprop,		/* execute */
*************** struct tree_opt_pass pass_phiprop = {
*** 383,388 ****
    TODO_dump_func
    | TODO_ggc_collect
    | TODO_update_ssa
!   | TODO_verify_ssa,		/* todo_flags_finish */
!   0				/* letter */
  };
--- 386,391 ----
    TODO_dump_func
    | TODO_ggc_collect
    | TODO_update_ssa
!   | TODO_verify_ssa		/* todo_flags_finish */
!  }
  };
Index: tree-object-size.c
===================================================================
*** tree-object-size.c	(revision 133313)
--- tree-object-size.c	(working copy)
*************** compute_object_sizes (void)
*** 1063,1070 ****
    return 0;
  }
  
! struct tree_opt_pass pass_object_sizes =
  {
    "objsz",				/* name */
    NULL,					/* gate */
    compute_object_sizes,			/* execute */
--- 1063,1072 ----
    return 0;
  }
  
! struct gimple_opt_pass pass_object_sizes =
  {
+  {
+   GIMPLE_PASS,
    "objsz",				/* name */
    NULL,					/* gate */
    compute_object_sizes,			/* execute */
*************** struct tree_opt_pass pass_object_sizes =
*** 1076,1081 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func | TODO_verify_ssa,	/* todo_flags_finish */
!   0					/* letter */
  };
--- 1078,1083 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func | TODO_verify_ssa	/* todo_flags_finish */
!  }
  };
Index: combine.c
===================================================================
*** combine.c	(revision 133313)
--- combine.c	(working copy)
*************** rest_of_handle_combine (void)
*** 13035,13042 ****
    return 0;
  }
  
! struct tree_opt_pass pass_combine =
  {
    "combine",                            /* name */
    gate_handle_combine,                  /* gate */
    rest_of_handle_combine,               /* execute */
--- 13035,13044 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_combine =
  {
+  {
+   RTL_PASS,
    "combine",                            /* name */
    gate_handle_combine,                  /* gate */
    rest_of_handle_combine,               /* execute */
*************** struct tree_opt_pass pass_combine =
*** 13051,13056 ****
    TODO_dump_func |
    TODO_df_finish | TODO_verify_rtl_sharing |
    TODO_ggc_collect,                     /* todo_flags_finish */
!   'c'                                   /* letter */
  };
  
--- 13053,13058 ----
    TODO_dump_func |
    TODO_df_finish | TODO_verify_rtl_sharing |
    TODO_ggc_collect,                     /* todo_flags_finish */
!  }
  };
  
Index: tree-outof-ssa.c
===================================================================
*** tree-outof-ssa.c	(revision 133313)
--- tree-outof-ssa.c	(working copy)
*************** rewrite_out_of_ssa (void)
*** 1466,1473 ****
  
  /* Define the parameters of the out of SSA pass.  */
  
! struct tree_opt_pass pass_del_ssa = 
  {
    "optimized",				/* name */
    NULL,					/* gate */
    rewrite_out_of_ssa,			/* execute */
--- 1466,1475 ----
  
  /* Define the parameters of the out of SSA pass.  */
  
! struct gimple_opt_pass pass_del_ssa = 
  {
+  {
+   GIMPLE_PASS,
    "optimized",				/* name */
    NULL,					/* gate */
    rewrite_out_of_ssa,			/* execute */
*************** struct tree_opt_pass pass_del_ssa = 
*** 1483,1488 ****
      | TODO_verify_stmts,		/* todo_flags_start */
    TODO_dump_func
    | TODO_ggc_collect
!   | TODO_remove_unused_locals,		/* todo_flags_finish */
!   0					/* letter */
  };
--- 1485,1490 ----
      | TODO_verify_stmts,		/* todo_flags_start */
    TODO_dump_func
    | TODO_ggc_collect
!   | TODO_remove_unused_locals		/* todo_flags_finish */
!  }
  };
Index: bb-reorder.c
===================================================================
*** bb-reorder.c	(revision 133313)
--- bb-reorder.c	(working copy)
*************** done:
*** 2096,2103 ****
    return 0;
  }
  
! struct tree_opt_pass pass_duplicate_computed_gotos =
  {
    "compgotos",                          /* name */
    gate_duplicate_computed_gotos,        /* gate */
    duplicate_computed_gotos,             /* execute */
--- 2096,2105 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_duplicate_computed_gotos =
  {
+  {
+   RTL_PASS,
    "compgotos",                          /* name */
    gate_duplicate_computed_gotos,        /* gate */
    duplicate_computed_gotos,             /* execute */
*************** struct tree_opt_pass pass_duplicate_comp
*** 2110,2116 ****
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_dump_func | TODO_verify_rtl_sharing,/* todo_flags_finish */
!   0                                     /* letter */
  };
  
  
--- 2112,2118 ----
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_dump_func | TODO_verify_rtl_sharing,/* todo_flags_finish */
!  }
  };
  
  
*************** rest_of_handle_reorder_blocks (void)
*** 2239,2246 ****
    return 0;
  }
  
! struct tree_opt_pass pass_reorder_blocks =
  {
    "bbro",                               /* name */
    gate_handle_reorder_blocks,           /* gate */
    rest_of_handle_reorder_blocks,        /* execute */
--- 2241,2250 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_reorder_blocks =
  {
+  {
+   RTL_PASS,
    "bbro",                               /* name */
    gate_handle_reorder_blocks,           /* gate */
    rest_of_handle_reorder_blocks,        /* execute */
*************** struct tree_opt_pass pass_reorder_blocks
*** 2253,2259 ****
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_dump_func | TODO_verify_rtl_sharing,/* todo_flags_finish */
!   'B'                                   /* letter */
  };
  
  static bool
--- 2257,2263 ----
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
    TODO_dump_func | TODO_verify_rtl_sharing,/* todo_flags_finish */
!  }
  };
  
  static bool
*************** rest_of_handle_partition_blocks (void)
*** 2277,2284 ****
    return 0;
  }
  
! struct tree_opt_pass pass_partition_blocks =
  {
    "bbpart",                             /* name */
    gate_handle_partition_blocks,         /* gate */
    rest_of_handle_partition_blocks,      /* execute */
--- 2281,2290 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_partition_blocks =
  {
+  {
+   RTL_PASS,
    "bbpart",                             /* name */
    gate_handle_partition_blocks,         /* gate */
    rest_of_handle_partition_blocks,      /* execute */
*************** struct tree_opt_pass pass_partition_bloc
*** 2292,2297 ****
--- 2298,2304 ----
    0,                                    /* todo_flags_start */
    TODO_dump_func | TODO_verify_rtl_sharing,/* todo_flags_finish */
    0                                     /* letter */
+  }
  };
  
  
Index: stack-ptr-mod.c
===================================================================
*** stack-ptr-mod.c	(revision 133313)
--- stack-ptr-mod.c	(working copy)
*************** rest_of_handle_stack_ptr_mod (void)
*** 91,98 ****
    return 0;
  }
  
! struct tree_opt_pass pass_stack_ptr_mod =
  {
    NULL,		                        /* name */
    NULL,                                 /* gate */
    rest_of_handle_stack_ptr_mod,         /* execute */
--- 91,100 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_stack_ptr_mod =
  {
+  {
+   RTL_PASS,
    NULL,		                        /* name */
    NULL,                                 /* gate */
    rest_of_handle_stack_ptr_mod,         /* execute */
*************** struct tree_opt_pass pass_stack_ptr_mod 
*** 104,109 ****
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   0,                                    /* todo_flags_finish */
!   0                                     /* letter */
  };
--- 106,111 ----
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   0                                     /* todo_flags_finish */
!  }
  };
Index: var-tracking.c
===================================================================
*** var-tracking.c	(revision 133313)
--- var-tracking.c	(working copy)
*************** gate_handle_var_tracking (void)
*** 3406,3413 ****
  
  
  
! struct tree_opt_pass pass_variable_tracking =
  {
    "vartrack",                           /* name */
    gate_handle_var_tracking,             /* gate */
    variable_tracking_main,               /* execute */
--- 3406,3415 ----
  
  
  
! struct rtl_opt_pass pass_variable_tracking =
  {
+  {
+   RTL_PASS,
    "vartrack",                           /* name */
    gate_handle_var_tracking,             /* gate */
    variable_tracking_main,               /* execute */
*************** struct tree_opt_pass pass_variable_track
*** 3419,3425 ****
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   TODO_dump_func | TODO_verify_rtl_sharing,/* todo_flags_finish */
!   'V'                                   /* letter */
  };
  
--- 3421,3427 ----
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   TODO_dump_func | TODO_verify_rtl_sharing/* todo_flags_finish */
!  }
  };
  
Index: tree-profile.c
===================================================================
*** tree-profile.c	(revision 133313)
--- tree-profile.c	(working copy)
*************** tree_profiling (void)
*** 443,450 ****
    return 0;
  }
  
! struct tree_opt_pass pass_tree_profile = 
  {
    "tree_profile",			/* name */
    do_tree_profiling,			/* gate */
    tree_profiling,			/* execute */
--- 443,452 ----
    return 0;
  }
  
! struct gimple_opt_pass pass_tree_profile = 
  {
+  {
+   GIMPLE_PASS,
    "tree_profile",			/* name */
    do_tree_profiling,			/* gate */
    tree_profiling,			/* execute */
*************** struct tree_opt_pass pass_tree_profile =
*** 456,463 ****
    PROP_gimple_leh | PROP_cfg,		/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_verify_stmts | TODO_dump_func,	/* todo_flags_finish */
!   0					/* letter */
  };
  
  struct profile_hooks tree_profile_hooks =
--- 458,465 ----
    PROP_gimple_leh | PROP_cfg,		/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_verify_stmts | TODO_dump_func	/* todo_flags_finish */
!  }
  };
  
  struct profile_hooks tree_profile_hooks =
Index: tree-vect-generic.c
===================================================================
*** tree-vect-generic.c	(revision 133313)
--- tree-vect-generic.c	(working copy)
*************** expand_vector_operations (void)
*** 527,534 ****
    return 0;
  }
  
! struct tree_opt_pass pass_lower_vector = 
  {
    "veclower",				/* name */
    0,					/* gate */
    expand_vector_operations,		/* execute */
--- 527,536 ----
    return 0;
  }
  
! struct gimple_opt_pass pass_lower_vector = 
  {
+  {
+   GIMPLE_PASS,
    "veclower",				/* name */
    0,					/* gate */
    expand_vector_operations,		/* execute */
*************** struct tree_opt_pass pass_lower_vector =
*** 541,552 ****
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
    TODO_dump_func | TODO_ggc_collect
!     | TODO_verify_stmts,		/* todo_flags_finish */
!   0					/* letter */
  };
  
! struct tree_opt_pass pass_lower_vector_ssa = 
  {
    "veclower2",				/* name */
    gate_expand_vector_operations,	/* gate */
    expand_vector_operations,		/* execute */
--- 543,556 ----
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
    TODO_dump_func | TODO_ggc_collect
!     | TODO_verify_stmts			/* todo_flags_finish */
!  }
  };
  
! struct gimple_opt_pass pass_lower_vector_ssa = 
  {
+  {
+   GIMPLE_PASS,
    "veclower2",				/* name */
    gate_expand_vector_operations,	/* gate */
    expand_vector_operations,		/* execute */
*************** struct tree_opt_pass pass_lower_vector_s
*** 560,567 ****
    0,					/* todo_flags_start */
    TODO_dump_func | TODO_update_ssa	/* todo_flags_finish */
      | TODO_verify_ssa
!     | TODO_verify_stmts | TODO_verify_flow,
!   0					/* letter */
  };
  
  #include "gt-tree-vect-generic.h"
--- 564,571 ----
    0,					/* todo_flags_start */
    TODO_dump_func | TODO_update_ssa	/* todo_flags_finish */
      | TODO_verify_ssa
!     | TODO_verify_stmts | TODO_verify_flow
!  }
  };
  
  #include "gt-tree-vect-generic.h"
Index: reg-stack.c
===================================================================
*** reg-stack.c	(revision 133313)
--- reg-stack.c	(working copy)
*************** gate_handle_stack_regs (void)
*** 3202,3209 ****
  #endif
  }
  
! struct tree_opt_pass pass_stack_regs =
  {
    NULL,                                 /* name */
    gate_handle_stack_regs,               /* gate */
    NULL,					/* execute */
--- 3202,3211 ----
  #endif
  }
  
! struct rtl_opt_pass pass_stack_regs =
  {
+  {
+   RTL_PASS,
    NULL,                                 /* name */
    gate_handle_stack_regs,               /* gate */
    NULL,					/* execute */
*************** struct tree_opt_pass pass_stack_regs =
*** 3215,3222 ****
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   0,                                    /* todo_flags_finish */
!   0                                     /* letter */
  };
  
  /* Convert register usage from flat register file usage to a stack
--- 3217,3224 ----
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   0                                     /* todo_flags_finish */
!  }
  };
  
  /* Convert register usage from flat register file usage to a stack
*************** rest_of_handle_stack_regs (void)
*** 3231,3238 ****
    return 0;
  }
  
! struct tree_opt_pass pass_stack_regs_run =
  {
    "stack",                              /* name */
    NULL,                                 /* gate */
    rest_of_handle_stack_regs,            /* execute */
--- 3233,3242 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_stack_regs_run =
  {
+  {
+   RTL_PASS,
    "stack",                              /* name */
    NULL,                                 /* gate */
    rest_of_handle_stack_regs,            /* execute */
*************** struct tree_opt_pass pass_stack_regs_run
*** 3246,3251 ****
    0,                                    /* todo_flags_start */
    TODO_df_finish | TODO_verify_rtl_sharing |
    TODO_dump_func |
!   TODO_ggc_collect,                     /* todo_flags_finish */
!   'k'                                   /* letter */
  };
--- 3250,3255 ----
    0,                                    /* todo_flags_start */
    TODO_df_finish | TODO_verify_rtl_sharing |
    TODO_dump_func |
!   TODO_ggc_collect                      /* todo_flags_finish */
!  }
  };
Index: sched-rgn.c
===================================================================
*** sched-rgn.c	(revision 133313)
--- sched-rgn.c	(working copy)
*************** rest_of_handle_sched2 (void)
*** 3192,3199 ****
    return 0;
  }
  
! struct tree_opt_pass pass_sched =
  {
    "sched1",                             /* name */
    gate_handle_sched,                    /* gate */
    rest_of_handle_sched,                 /* execute */
--- 3192,3201 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_sched =
  {
+  {
+   RTL_PASS,
    "sched1",                             /* name */
    gate_handle_sched,                    /* gate */
    rest_of_handle_sched,                 /* execute */
*************** struct tree_opt_pass pass_sched =
*** 3208,3219 ****
    TODO_df_finish | TODO_verify_rtl_sharing |
    TODO_dump_func |
    TODO_verify_flow |
!   TODO_ggc_collect,                     /* todo_flags_finish */
!   'S'                                   /* letter */
  };
  
! struct tree_opt_pass pass_sched2 =
  {
    "sched2",                             /* name */
    gate_handle_sched2,                   /* gate */
    rest_of_handle_sched2,                /* execute */
--- 3210,3223 ----
    TODO_df_finish | TODO_verify_rtl_sharing |
    TODO_dump_func |
    TODO_verify_flow |
!   TODO_ggc_collect                      /* todo_flags_finish */
!  }
  };
  
! struct rtl_opt_pass pass_sched2 =
  {
+  {
+   RTL_PASS,
    "sched2",                             /* name */
    gate_handle_sched2,                   /* gate */
    rest_of_handle_sched2,                /* execute */
*************** struct tree_opt_pass pass_sched2 =
*** 3228,3234 ****
    TODO_df_finish | TODO_verify_rtl_sharing |
    TODO_dump_func |
    TODO_verify_flow |
!   TODO_ggc_collect,                     /* todo_flags_finish */
!   'R'                                   /* letter */
  };
  
--- 3232,3238 ----
    TODO_df_finish | TODO_verify_rtl_sharing |
    TODO_dump_func |
    TODO_verify_flow |
!   TODO_ggc_collect                      /* todo_flags_finish */
!  }
  };
  
Index: tree-ssa-structalias.c
===================================================================
*** tree-ssa-structalias.c	(revision 133313)
--- tree-ssa-structalias.c	(working copy)
*************** ipa_pta_execute (void)
*** 5630,5637 ****
    return 0;
  }
  
! struct tree_opt_pass pass_ipa_pta =
  {
    "pta",		                /* name */
    gate_ipa_pta,			/* gate */
    ipa_pta_execute,			/* execute */
--- 5630,5639 ----
    return 0;
  }
  
! struct simple_ipa_opt_pass pass_ipa_pta =
  {
+  {
+   SIMPLE_IPA_PASS,
    "pta",		                /* name */
    gate_ipa_pta,			/* gate */
    ipa_pta_execute,			/* execute */
*************** struct tree_opt_pass pass_ipa_pta =
*** 5643,5650 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_update_ssa,                      /* todo_flags_finish */
!   0					/* letter */
  };
  
  /* Initialize the heapvar for statement mapping.  */
--- 5645,5652 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_update_ssa                       /* todo_flags_finish */
!  }
  };
  
  /* Initialize the heapvar for statement mapping.  */
Index: tree-cfg.c
===================================================================
*** tree-cfg.c	(revision 133313)
--- tree-cfg.c	(working copy)
*************** execute_build_cfg (void)
*** 212,219 ****
    return 0;
  }
  
! struct tree_opt_pass pass_build_cfg =
  {
    "cfg",				/* name */
    NULL,					/* gate */
    execute_build_cfg,			/* execute */
--- 212,221 ----
    return 0;
  }
  
! struct gimple_opt_pass pass_build_cfg =
  {
+  {
+   GIMPLE_PASS,
    "cfg",				/* name */
    NULL,					/* gate */
    execute_build_cfg,			/* execute */
*************** struct tree_opt_pass pass_build_cfg =
*** 225,232 ****
    PROP_cfg,				/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_verify_stmts | TODO_cleanup_cfg,	/* todo_flags_finish */
!   0					/* letter */
  };
  
  /* Search the CFG for any computed gotos.  If found, factor them to a
--- 227,234 ----
    PROP_cfg,				/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_verify_stmts | TODO_cleanup_cfg	/* todo_flags_finish */
!  }
  };
  
  /* Search the CFG for any computed gotos.  If found, factor them to a
*************** remove_useless_stmts (void)
*** 1933,1940 ****
  }
  
  
! struct tree_opt_pass pass_remove_useless_stmts =
  {
    "useless",				/* name */
    NULL,					/* gate */
    remove_useless_stmts,			/* execute */
--- 1935,1944 ----
  }
  
  
! struct gimple_opt_pass pass_remove_useless_stmts =
  {
+  {
+   GIMPLE_PASS,
    "useless",				/* name */
    NULL,					/* gate */
    remove_useless_stmts,			/* execute */
*************** struct tree_opt_pass pass_remove_useless
*** 1946,1953 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func,			/* todo_flags_finish */
!   0					/* letter */
  };
  
  /* Remove PHI nodes associated with basic block BB and all edges out of BB.  */
--- 1950,1957 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func			/* todo_flags_finish */
!  }
  };
  
  /* Remove PHI nodes associated with basic block BB and all edges out of BB.  */
*************** split_critical_edges (void)
*** 6898,6905 ****
    return 0;
  }
  
! struct tree_opt_pass pass_split_crit_edges =
  {
    "crited",                          /* name */
    NULL,                          /* gate */
    split_critical_edges,          /* execute */
--- 6902,6911 ----
    return 0;
  }
  
! struct gimple_opt_pass pass_split_crit_edges =
  {
+  {
+   GIMPLE_PASS,
    "crited",                          /* name */
    NULL,                          /* gate */
    split_critical_edges,          /* execute */
*************** struct tree_opt_pass pass_split_crit_edg
*** 6911,6918 ****
    PROP_no_crit_edges,            /* properties_provided */
    0,                             /* properties_destroyed */
    0,                             /* todo_flags_start */
!   TODO_dump_func,                /* todo_flags_finish */
!   0                              /* letter */
  };
  
  \f
--- 6917,6924 ----
    PROP_no_crit_edges,            /* properties_provided */
    0,                             /* properties_destroyed */
    0,                             /* todo_flags_start */
!   TODO_dump_func                 /* todo_flags_finish */
!  }
  };
  
  \f
*************** extract_true_false_edges_from_block (bas
*** 7068,7075 ****
      }
  }
  
! struct tree_opt_pass pass_warn_function_return =
  {
    NULL,					/* name */
    NULL,					/* gate */
    execute_warn_function_return,		/* execute */
--- 7074,7083 ----
      }
  }
  
! struct gimple_opt_pass pass_warn_function_return =
  {
+  {
+   GIMPLE_PASS,
    NULL,					/* name */
    NULL,					/* gate */
    execute_warn_function_return,		/* execute */
*************** struct tree_opt_pass pass_warn_function_
*** 7081,7088 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   0,					/* todo_flags_finish */
!   0					/* letter */
  };
  
  /* Emit noreturn warnings.  */
--- 7089,7096 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   0					/* todo_flags_finish */
!  }
  };
  
  /* Emit noreturn warnings.  */
*************** execute_warn_function_noreturn (void)
*** 7100,7107 ****
    return 0;
  }
  
! struct tree_opt_pass pass_warn_function_noreturn =
  {
    NULL,					/* name */
    NULL,					/* gate */
    execute_warn_function_noreturn,	/* execute */
--- 7108,7117 ----
    return 0;
  }
  
! struct gimple_opt_pass pass_warn_function_noreturn =
  {
+  {
+   GIMPLE_PASS,
    NULL,					/* name */
    NULL,					/* gate */
    execute_warn_function_noreturn,	/* execute */
*************** struct tree_opt_pass pass_warn_function_
*** 7113,7118 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   0,					/* todo_flags_finish */
!   0					/* letter */
  };
--- 7123,7128 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   0					/* todo_flags_finish */
!  }
  };
Index: passes.c
===================================================================
*** passes.c	(revision 133313)
--- passes.c	(working copy)
*************** along with GCC; see the file COPYING3.  
*** 104,110 ****
  
  /* This is used for debugging.  It allows the current pass to printed
     from anywhere in compilation.  */
! struct tree_opt_pass *current_pass;
  
  /* Call from anywhere to find out what pass this is.  Useful for
     printing out debugging information deep inside an service
--- 104,110 ----
  
  /* This is used for debugging.  It allows the current pass to printed
     from anywhere in compilation.  */
! struct opt_pass *current_pass;
  
  /* Call from anywhere to find out what pass this is.  Useful for
     printing out debugging information deep inside an service
*************** finish_optimization_passes (void)
*** 246,264 ****
    timevar_push (TV_DUMP);
    if (profile_arc_flag || flag_test_coverage || flag_branch_probabilities)
      {
!       dump_file = dump_begin (pass_profile.static_pass_number, NULL);
        end_branch_prob ();
        if (dump_file)
! 	dump_end (pass_profile.static_pass_number, dump_file);
      }
  
    if (optimize > 0)
      {
!       dump_file = dump_begin (pass_combine.static_pass_number, NULL);
        if (dump_file)
  	{
  	  dump_combine_total_stats (dump_file);
!           dump_end (pass_combine.static_pass_number, dump_file);
  	}
      }
  
--- 246,264 ----
    timevar_push (TV_DUMP);
    if (profile_arc_flag || flag_test_coverage || flag_branch_probabilities)
      {
!       dump_file = dump_begin (pass_profile.pass.static_pass_number, NULL);
        end_branch_prob ();
        if (dump_file)
! 	dump_end (pass_profile.pass.static_pass_number, dump_file);
      }
  
    if (optimize > 0)
      {
!       dump_file = dump_begin (pass_combine.pass.static_pass_number, NULL);
        if (dump_file)
  	{
  	  dump_combine_total_stats (dump_file);
!           dump_end (pass_combine.pass.static_pass_number, dump_file);
  	}
      }
  
*************** gate_rest_of_compilation (void)
*** 284,291 ****
    return !(rtl_dump_and_exit || flag_syntax_only || errorcount || sorrycount);
  }
  
! struct tree_opt_pass pass_rest_of_compilation =
  {
    NULL,                                 /* name */
    gate_rest_of_compilation,             /* gate */
    NULL,                                 /* execute */
--- 284,293 ----
    return !(rtl_dump_and_exit || flag_syntax_only || errorcount || sorrycount);
  }
  
! struct gimple_opt_pass pass_rest_of_compilation =
  {
+  {
+   GIMPLE_PASS,
    NULL,                                 /* name */
    gate_rest_of_compilation,             /* gate */
    NULL,                                 /* execute */
*************** struct tree_opt_pass pass_rest_of_compil
*** 297,304 ****
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   TODO_ggc_collect,                     /* todo_flags_finish */
!   0                                     /* letter */
  };
  
  static bool
--- 299,306 ----
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   TODO_ggc_collect                      /* todo_flags_finish */
!  }
  };
  
  static bool
*************** gate_postreload (void)
*** 307,314 ****
    return reload_completed;
  }
  
! struct tree_opt_pass pass_postreload =
  {
    NULL,                                 /* name */
    gate_postreload,                      /* gate */
    NULL,                                 /* execute */
--- 309,318 ----
    return reload_completed;
  }
  
! struct rtl_opt_pass pass_postreload =
  {
+  {
+   RTL_PASS,
    NULL,                                 /* name */
    gate_postreload,                      /* gate */
    NULL,                                 /* execute */
*************** struct tree_opt_pass pass_postreload =
*** 320,340 ****
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   TODO_ggc_collect | TODO_verify_rtl_sharing, /* todo_flags_finish */
!   0					/* letter */
  };
  
  
  
  /* The root of the compilation pass tree, once constructed.  */
! struct tree_opt_pass *all_passes, *all_ipa_passes, *all_lowering_passes;
  
  /* Iterate over the pass tree allocating dump file numbers.  We want
     to do this depth first, and independent of whether the pass is
     enabled or not.  */
  
  static void
! register_one_dump_file (struct tree_opt_pass *pass, bool ipa, int properties)
  {
    char *dot_name, *flag_name, *glob_name;
    const char *prefix;
--- 324,344 ----
    0,                                    /* properties_provided */
    0,                                    /* properties_destroyed */
    0,                                    /* todo_flags_start */
!   TODO_ggc_collect | TODO_verify_rtl_sharing /* todo_flags_finish */
!  }
  };
  
  
  
  /* The root of the compilation pass tree, once constructed.  */
! struct opt_pass *all_passes, *all_ipa_passes, *all_lowering_passes;
  
  /* Iterate over the pass tree allocating dump file numbers.  We want
     to do this depth first, and independent of whether the pass is
     enabled or not.  */
  
  static void
! register_one_dump_file (struct opt_pass *pass, bool ipa, int properties)
  {
    char *dot_name, *flag_name, *glob_name;
    const char *prefix;
*************** register_one_dump_file (struct tree_opt_
*** 358,370 ****
    flag_name = concat (prefix, pass->name, num, NULL);
    glob_name = concat (prefix, pass->name, NULL);
    pass->static_pass_number = dump_register (dot_name, flag_name, glob_name,
!                                             flags, pass->letter);
  }
  
  /* Recursive worker function for register_dump_files.  */
  
  static int 
! register_dump_files_1 (struct tree_opt_pass *pass, bool ipa, int properties)
  {
    do
      {
--- 362,374 ----
    flag_name = concat (prefix, pass->name, num, NULL);
    glob_name = concat (prefix, pass->name, NULL);
    pass->static_pass_number = dump_register (dot_name, flag_name, glob_name,
!                                             flags);
  }
  
  /* Recursive worker function for register_dump_files.  */
  
  static int 
! register_dump_files_1 (struct opt_pass *pass, bool ipa, int properties)
  {
    do
      {
*************** register_dump_files_1 (struct tree_opt_p
*** 398,404 ****
     the pipeline.  */
  
  static void 
! register_dump_files (struct tree_opt_pass *pass, bool ipa, int properties)
  {
    pass->properties_required |= properties;
    register_dump_files_1 (pass, ipa, properties);
--- 402,408 ----
     the pipeline.  */
  
  static void 
! register_dump_files (struct opt_pass *pass, bool ipa, int properties)
  {
    pass->properties_required |= properties;
    register_dump_files_1 (pass, ipa, properties);
*************** register_dump_files (struct tree_opt_pas
*** 407,420 ****
  /* Add a pass to the pass list. Duplicate the pass if it's already
     in the list.  */
  
! static struct tree_opt_pass **
! next_pass_1 (struct tree_opt_pass **list, struct tree_opt_pass *pass)
  {
    /* A nonzero static_pass_number indicates that the
       pass is already in the list.  */
    if (pass->static_pass_number)
      {
!       struct tree_opt_pass *new;
  
        new = xmalloc (sizeof (*new));
        memcpy (new, pass, sizeof (*new));
--- 411,424 ----
  /* Add a pass to the pass list. Duplicate the pass if it's already
     in the list.  */
  
! static struct opt_pass **
! next_pass_1 (struct opt_pass **list, struct opt_pass *pass)
  {
    /* A nonzero static_pass_number indicates that the
       pass is already in the list.  */
    if (pass->static_pass_number)
      {
!       struct opt_pass *new;
  
        new = xmalloc (sizeof (*new));
        memcpy (new, pass, sizeof (*new));
*************** next_pass_1 (struct tree_opt_pass **list
*** 467,475 ****
  void
  init_optimization_passes (void)
  {
!   struct tree_opt_pass **p;
  
! #define NEXT_PASS(PASS)  (p = next_pass_1 (p, &PASS))
  
   /* All passes needed to lower the function into shape optimizers can
      operate on.  These passes are always run first on the function, but
--- 471,479 ----
  void
  init_optimization_passes (void)
  {
!   struct opt_pass **p;
  
! #define NEXT_PASS(PASS)  (p = next_pass_1 (p, &((PASS).pass)))
  
   /* All passes needed to lower the function into shape optimizers can
      operate on.  These passes are always run first on the function, but
*************** init_optimization_passes (void)
*** 497,517 ****
    NEXT_PASS (pass_ipa_function_and_variable_visibility);
    NEXT_PASS (pass_ipa_early_inline);
      {
!       struct tree_opt_pass **p = &pass_ipa_early_inline.sub;
        NEXT_PASS (pass_early_inline);
        NEXT_PASS (pass_inline_parameters);
        NEXT_PASS (pass_rebuild_cgraph_edges);
      }
    NEXT_PASS (pass_early_local_passes);
      {
!       struct tree_opt_pass **p = &pass_early_local_passes.sub;
        NEXT_PASS (pass_tree_profile);
        NEXT_PASS (pass_cleanup_cfg);
        NEXT_PASS (pass_init_datastructures);
        NEXT_PASS (pass_expand_omp);
        NEXT_PASS (pass_all_early_optimizations);
  	{
! 	  struct tree_opt_pass **p = &pass_all_early_optimizations.sub;
  	  NEXT_PASS (pass_referenced_vars);
  	  NEXT_PASS (pass_reset_cc_flags);
  	  NEXT_PASS (pass_build_ssa);
--- 501,521 ----
    NEXT_PASS (pass_ipa_function_and_variable_visibility);
    NEXT_PASS (pass_ipa_early_inline);
      {
!       struct opt_pass **p = &pass_ipa_early_inline.pass.sub;
        NEXT_PASS (pass_early_inline);
        NEXT_PASS (pass_inline_parameters);
        NEXT_PASS (pass_rebuild_cgraph_edges);
      }
    NEXT_PASS (pass_early_local_passes);
      {
!       struct opt_pass **p = &pass_early_local_passes.pass.sub;
        NEXT_PASS (pass_tree_profile);
        NEXT_PASS (pass_cleanup_cfg);
        NEXT_PASS (pass_init_datastructures);
        NEXT_PASS (pass_expand_omp);
        NEXT_PASS (pass_all_early_optimizations);
  	{
! 	  struct opt_pass **p = &pass_all_early_optimizations.pass.sub;
  	  NEXT_PASS (pass_referenced_vars);
  	  NEXT_PASS (pass_reset_cc_flags);
  	  NEXT_PASS (pass_build_ssa);
*************** init_optimization_passes (void)
*** 555,561 ****
    NEXT_PASS (pass_apply_inline);
    NEXT_PASS (pass_all_optimizations);
      {
!       struct tree_opt_pass **p = &pass_all_optimizations.sub;
        NEXT_PASS (pass_create_structure_vars);
        /* ??? pass_build_alias is a dummy pass that ensures that we
  	 execute TODO_rebuild_alias at this point even if
--- 559,565 ----
    NEXT_PASS (pass_apply_inline);
    NEXT_PASS (pass_all_optimizations);
      {
!       struct opt_pass **p = &pass_all_optimizations.pass.sub;
        NEXT_PASS (pass_create_structure_vars);
        /* ??? pass_build_alias is a dummy pass that ensures that we
  	 execute TODO_rebuild_alias at this point even if
*************** init_optimization_passes (void)
*** 614,620 ****
        NEXT_PASS (pass_sink_code);
        NEXT_PASS (pass_tree_loop);
  	{
! 	  struct tree_opt_pass **p = &pass_tree_loop.sub;
  	  NEXT_PASS (pass_tree_loop_init);
  	  NEXT_PASS (pass_copy_prop);
  	  NEXT_PASS (pass_dce_loop);
--- 618,624 ----
        NEXT_PASS (pass_sink_code);
        NEXT_PASS (pass_tree_loop);
  	{
! 	  struct opt_pass **p = &pass_tree_loop.pass.sub;
  	  NEXT_PASS (pass_tree_loop_init);
  	  NEXT_PASS (pass_copy_prop);
  	  NEXT_PASS (pass_dce_loop);
*************** init_optimization_passes (void)
*** 631,637 ****
  	  NEXT_PASS (pass_if_conversion);
  	  NEXT_PASS (pass_vectorize);
  	    {
! 	      struct tree_opt_pass **p = &pass_vectorize.sub;
  	      NEXT_PASS (pass_lower_vector_ssa);
  	      NEXT_PASS (pass_dce_loop);
  	    }
--- 635,641 ----
  	  NEXT_PASS (pass_if_conversion);
  	  NEXT_PASS (pass_vectorize);
  	    {
! 	      struct opt_pass **p = &pass_vectorize.pass.sub;
  	      NEXT_PASS (pass_lower_vector_ssa);
  	      NEXT_PASS (pass_dce_loop);
  	    }
*************** init_optimization_passes (void)
*** 685,691 ****
    NEXT_PASS (pass_expand);
    NEXT_PASS (pass_rest_of_compilation);
      {
!       struct tree_opt_pass **p = &pass_rest_of_compilation.sub;
        NEXT_PASS (pass_init_function);
        NEXT_PASS (pass_jump);
        NEXT_PASS (pass_rtl_eh);
--- 689,695 ----
    NEXT_PASS (pass_expand);
    NEXT_PASS (pass_rest_of_compilation);
      {
!       struct opt_pass **p = &pass_rest_of_compilation.pass.sub;
        NEXT_PASS (pass_init_function);
        NEXT_PASS (pass_jump);
        NEXT_PASS (pass_rtl_eh);
*************** init_optimization_passes (void)
*** 705,711 ****
  	 efficiently.  */
        NEXT_PASS (pass_loop2);
  	{
! 	  struct tree_opt_pass **p = &pass_loop2.sub;
  	  NEXT_PASS (pass_rtl_loop_init);
  	  NEXT_PASS (pass_rtl_move_loop_invariants);
  	  NEXT_PASS (pass_rtl_unswitch);
--- 709,715 ----
  	 efficiently.  */
        NEXT_PASS (pass_loop2);
  	{
! 	  struct opt_pass **p = &pass_loop2.pass.sub;
  	  NEXT_PASS (pass_rtl_loop_init);
  	  NEXT_PASS (pass_rtl_move_loop_invariants);
  	  NEXT_PASS (pass_rtl_unswitch);
*************** init_optimization_passes (void)
*** 743,749 ****
        NEXT_PASS (pass_subregs_of_mode_finish);
        NEXT_PASS (pass_postreload);
  	{
! 	  struct tree_opt_pass **p = &pass_postreload.sub;
  	  NEXT_PASS (pass_postreload_cse);
  	  NEXT_PASS (pass_gcse2);
  	  NEXT_PASS (pass_split_after_reload);
--- 747,753 ----
        NEXT_PASS (pass_subregs_of_mode_finish);
        NEXT_PASS (pass_postreload);
  	{
! 	  struct opt_pass **p = &pass_postreload.pass.sub;
  	  NEXT_PASS (pass_postreload_cse);
  	  NEXT_PASS (pass_gcse2);
  	  NEXT_PASS (pass_split_after_reload);
*************** init_optimization_passes (void)
*** 764,770 ****
  	  NEXT_PASS (pass_sched2);
  	  NEXT_PASS (pass_stack_regs);
  	    {
! 	      struct tree_opt_pass **p = &pass_stack_regs.sub;
  	      NEXT_PASS (pass_split_before_regstack);
  	      NEXT_PASS (pass_stack_regs_run);
  	    }
--- 768,774 ----
  	  NEXT_PASS (pass_sched2);
  	  NEXT_PASS (pass_stack_regs);
  	    {
! 	      struct opt_pass **p = &pass_stack_regs.pass.sub;
  	      NEXT_PASS (pass_split_before_regstack);
  	      NEXT_PASS (pass_stack_regs_run);
  	    }
*************** verify_curr_properties (void *data)
*** 1056,1068 ****
  static void
  update_properties_after_pass (void *data)
  {
!   struct tree_opt_pass *pass = data;
    cfun->curr_properties = (cfun->curr_properties | pass->properties_provided)
  		           & ~pass->properties_destroyed;
  }
  
  static bool
! execute_one_pass (struct tree_opt_pass *pass)
  {
    bool initializing_dump;
    unsigned int todo_after = 0;
--- 1060,1072 ----
  static void
  update_properties_after_pass (void *data)
  {
!   struct opt_pass *pass = data;
    cfun->curr_properties = (cfun->curr_properties | pass->properties_provided)
  		           & ~pass->properties_destroyed;
  }
  
  static bool
! execute_one_pass (struct opt_pass *pass)
  {
    bool initializing_dump;
    unsigned int todo_after = 0;
*************** execute_one_pass (struct tree_opt_pass *
*** 1169,1175 ****
  }
  
  void
! execute_pass_list (struct tree_opt_pass *pass)
  {
    do
      {
--- 1173,1179 ----
  }
  
  void
! execute_pass_list (struct opt_pass *pass)
  {
    do
      {
*************** execute_pass_list (struct tree_opt_pass 
*** 1183,1189 ****
  /* Same as execute_pass_list but assume that subpasses of IPA passes
     are local passes.  */
  void
! execute_ipa_pass_list (struct tree_opt_pass *pass)
  {
    do
      {
--- 1187,1193 ----
  /* Same as execute_pass_list but assume that subpasses of IPA passes
     are local passes.  */
  void
! execute_ipa_pass_list (struct opt_pass *pass)
  {
    do
      {
Index: ipa-struct-reorg.c
===================================================================
*** ipa-struct-reorg.c	(revision 133313)
--- ipa-struct-reorg.c	(working copy)
*************** struct_reorg_gate (void)
*** 4038,4045 ****
      && (optimize > 0);
  }
  
! struct tree_opt_pass pass_ipa_struct_reorg = 
  {
    "ipa_struct_reorg",	 	  /* name */
    struct_reorg_gate,		  /* gate */
    reorg_structs_drive,		  /* execute */
--- 4038,4047 ----
      && (optimize > 0);
  }
  
! struct simple_ipa_opt_pass pass_ipa_struct_reorg = 
  {
+  {
+   SIMPLE_IPA_PASS,
    "ipa_struct_reorg",	 	  /* name */
    struct_reorg_gate,		  /* gate */
    reorg_structs_drive,		  /* execute */
*************** struct tree_opt_pass pass_ipa_struct_reo
*** 4051,4056 ****
    0,				  /* properties_provided */
    0,				  /* properties_destroyed */
    TODO_verify_ssa,		  /* todo_flags_start */
!   TODO_dump_func | TODO_verify_ssa,	/* todo_flags_finish */
!   0					/* letter */
  };
--- 4053,4058 ----
    0,				  /* properties_provided */
    0,				  /* properties_destroyed */
    TODO_verify_ssa,		  /* todo_flags_start */
!   TODO_dump_func | TODO_verify_ssa	/* todo_flags_finish */
!  }
  };
Index: tree-ssa-reassoc.c
===================================================================
*** tree-ssa-reassoc.c	(revision 133313)
--- tree-ssa-reassoc.c	(working copy)
*************** gate_tree_ssa_reassoc (void)
*** 1528,1535 ****
    return flag_tree_reassoc != 0;
  }
  
! struct tree_opt_pass pass_reassoc =
  {
    "reassoc",				/* name */
    gate_tree_ssa_reassoc,		/* gate */
    execute_reassoc,			/* execute */
--- 1528,1537 ----
    return flag_tree_reassoc != 0;
  }
  
! struct gimple_opt_pass pass_reassoc =
  {
+  {
+   GIMPLE_PASS,
    "reassoc",				/* name */
    gate_tree_ssa_reassoc,		/* gate */
    execute_reassoc,			/* execute */
*************** struct tree_opt_pass pass_reassoc =
*** 1541,1546 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func | TODO_ggc_collect | TODO_verify_ssa, /* todo_flags_finish */
!   0					/* letter */
  };
--- 1543,1548 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   TODO_dump_func | TODO_ggc_collect | TODO_verify_ssa /* todo_flags_finish */
!  }
  };
Index: combine-stack-adj.c
===================================================================
*** combine-stack-adj.c	(revision 133313)
--- combine-stack-adj.c	(working copy)
*************** rest_of_handle_stack_adjustments (void)
*** 472,479 ****
    return 0;
  }
  
! struct tree_opt_pass pass_stack_adjustments =
  {
    "csa",                                /* name */
    gate_handle_stack_adjustments,        /* gate */
    rest_of_handle_stack_adjustments,     /* execute */
--- 472,481 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_stack_adjustments =
  {
+  {
+   RTL_PASS,
    "csa",                                /* name */
    gate_handle_stack_adjustments,        /* gate */
    rest_of_handle_stack_adjustments,     /* execute */
*************** struct tree_opt_pass pass_stack_adjustme
*** 488,493 ****
    TODO_df_finish | TODO_verify_rtl_sharing |
    TODO_dump_func |
    TODO_ggc_collect,                     /* todo_flags_finish */
!   0                                     /* letter */
  };
  
--- 490,495 ----
    TODO_df_finish | TODO_verify_rtl_sharing |
    TODO_dump_func |
    TODO_ggc_collect,                     /* todo_flags_finish */
!  }
  };
  
Index: cfgrtl.c
===================================================================
*** cfgrtl.c	(revision 133313)
--- cfgrtl.c	(working copy)
*************** free_bb_for_insn (void)
*** 427,434 ****
    return 0;
  }
  
! struct tree_opt_pass pass_free_cfg =
  {
    NULL,                                 /* name */
    NULL,                                 /* gate */
    free_bb_for_insn,                     /* execute */
--- 427,436 ----
    return 0;
  }
  
! struct rtl_opt_pass pass_free_cfg =
  {
+  {
+   RTL_PASS,
    NULL,                                 /* name */
    NULL,                                 /* gate */
    free_bb_for_insn,                     /* execute */
*************** struct tree_opt_pass pass_free_cfg =
*** 441,447 ****
    PROP_cfg,                             /* properties_destroyed */
    0,                                    /* todo_flags_start */
    0,                                    /* todo_flags_finish */
!   0                                     /* letter */
  };
  
  /* Return RTX to emit after when we want to emit code on the entry of function.  */
--- 443,449 ----
    PROP_cfg,                             /* properties_destroyed */
    0,                                    /* todo_flags_start */
    0,                                    /* todo_flags_finish */
!  }
  };
  
  /* Return RTX to emit after when we want to emit code on the entry of function.  */
Index: dce.c
===================================================================
*** dce.c	(revision 133313)
--- dce.c	(working copy)
*************** gate_ud_dce (void)
*** 567,574 ****
      && dbg_cnt (dce_ud);
  }
  
! struct tree_opt_pass pass_ud_rtl_dce =
  {
    "dce",                                /* name */
    gate_ud_dce,                        /* gate */
    rest_of_handle_ud_dce,              /* execute */
--- 567,576 ----
      && dbg_cnt (dce_ud);
  }
  
! struct rtl_opt_pass pass_ud_rtl_dce =
  {
+  {
+   RTL_PASS,
    "dce",                                /* name */
    gate_ud_dce,                        /* gate */
    rest_of_handle_ud_dce,              /* execute */
*************** struct tree_opt_pass pass_ud_rtl_dce =
*** 582,589 ****
    0,                                    /* todo_flags_start */
    TODO_dump_func |
    TODO_df_finish | TODO_verify_rtl_sharing |
!   TODO_ggc_collect,                     /* todo_flags_finish */
!   'w'                                   /* letter */
  };
  
  
--- 584,591 ----
    0,                                    /* todo_flags_start */
    TODO_dump_func |
    TODO_df_finish | TODO_verify_rtl_sharing |
!   TODO_ggc_collect                     /* todo_flags_finish */
!  }
  };
  
  
*************** gate_fast_dce (void)
*** 853,860 ****
      && dbg_cnt (dce_fast);
  }
  
! struct tree_opt_pass pass_fast_rtl_dce =
  {
    "dce",                                /* name */
    gate_fast_dce,                        /* gate */
    rest_of_handle_fast_dce,              /* execute */
--- 855,864 ----
      && dbg_cnt (dce_fast);
  }
  
! struct rtl_opt_pass pass_fast_rtl_dce =
  {
+  {
+   RTL_PASS,
    "dce",                                /* name */
    gate_fast_dce,                        /* gate */
    rest_of_handle_fast_dce,              /* execute */
*************** struct tree_opt_pass pass_fast_rtl_dce =
*** 868,873 ****
    0,                                    /* todo_flags_start */
    TODO_dump_func |
    TODO_df_finish | TODO_verify_rtl_sharing |
!   TODO_ggc_collect,                     /* todo_flags_finish */
!   'w'                                   /* letter */
  };
--- 872,877 ----
    0,                                    /* todo_flags_start */
    TODO_dump_func |
    TODO_df_finish | TODO_verify_rtl_sharing |
!   TODO_ggc_collect                      /* todo_flags_finish */
!  }
  };
Index: tree-ssanames.c
===================================================================
*** tree-ssanames.c	(revision 133313)
--- tree-ssanames.c	(working copy)
*************** release_dead_ssa_names (void)
*** 343,350 ****
    return 0;
  }
  
! struct tree_opt_pass pass_release_ssa_names =
  {
    "release_ssa",			/* name */
    NULL,					/* gate */
    release_dead_ssa_names,		/* execute */
--- 343,352 ----
    return 0;
  }
  
! struct gimple_opt_pass pass_release_ssa_names =
  {
+  {
+   GIMPLE_PASS,
    "release_ssa",			/* name */
    NULL,					/* gate */
    release_dead_ssa_names,		/* execute */
*************** struct tree_opt_pass pass_release_ssa_na
*** 356,361 ****
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   0,					/* todo_flags_finish */
!   0					/* letter */
  };
--- 358,363 ----
    0,					/* properties_provided */
    0,					/* properties_destroyed */
    0,					/* todo_flags_start */
!   0					/* todo_flags_finish */
!  }
  };

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

* Re: tree-pass datastructure preparation for introduction of extra  IPA hooks and removal of RTL dump letters.
  2008-03-18 20:47 tree-pass datastructure preparation for introduction of extra IPA hooks and removal of RTL dump letters Jan Hubicka
@ 2008-03-18 21:11 ` Kenneth Zadeck
  2008-03-18 22:02 ` Diego Novillo
  1 sibling, 0 replies; 5+ messages in thread
From: Kenneth Zadeck @ 2008-03-18 21:11 UTC (permalink / raw)
  To: Jan Hubicka; +Cc: gcc-patches, dnovillo, rguenther

Jan Hubicka wrote:
> Hi,
> this mechanical patch update pass manager datastructures to simple inheritance
> model as discussed.  Now there is base "opt_pass" and inherited
> "gimple_opt_pass", "rtl_opt_pass" and "simple_ipa_pass".  The plan is to add
> also non-simpe "ipa_pass" having all the new hooks, but I am deffering
> everything possible to followup patch. This patch is ugly enough as it is.
>
> The patch also drop RTL dumping letters as discussed earlier (Dataflow merge
> run out of rtl dump letters).  I kept all the infrastructure that I will remove
> by followup too.
>
> The slightly earlier version of patch bootstrapped/regtested i686-linux, I am
> retesting after some last minute editing.  OK if it passes?
>
>   
make sure you quote and close pr35094.
> 	* tree-vrp.c: Update tree_pass descriptors.
> 	* regrename.c: Update tree_pass descriptors.
> 	* fwprop.c: Update tree_pass descriptors.
> 	* doc/invoke.texi: Remove documentation of dropped -d? flags.
> 	* tree-into-ssa.c: Update tree_pass descriptors.
> 	* tree-dump.c: Update tree_pass descriptors.
> 	* tree-complex.c: Update tree_pass descriptors.
> 	* tree-dump.h: Update tree_pass descriptors.
> 	* see.c: Update tree_pass descriptors.
> 	* cgraphbuild.c: Update tree_pass descriptors.
> 	* tracer.c: Update tree_pass descriptors.
> 	* tree-loop-distribution.c: Update tree_pass descriptors.
> 	* cgraph.c: Update tree_pass descriptors.
> 	* postreload-gcse.c: Update tree_pass descriptors.
> 	* postreload.c: Update tree_pass descriptors.
> 	* tree-ssa-loop-ch.c: Update tree_pass descriptors.
> 	* tree-tailcall.c: Update tree_pass descriptors.
> 	* tree-pass.h (tree_opt_pass): Rename to ...
> 	(opt_pass) ... this one; add "type" field and remove letter field.
> 	(gimple_opt_pass, rtl_opt_pass, simple_ipa_opt_pass): New.
> 	(execute_pass_list, execute_ipa_pass_list, all_passes, all_ipa_passes,
> 	all_lowering_passes): Update declaration.
> 	* ipa-cp.c: Update tree_pass descriptors.
> 	* final.c: Update tree_pass descriptors.
> 	* omp-low.c: Update tree_pass descriptors.
> 	* tree-ssa-dse.c: Update tree_pass descriptors.
> 	* ipa-reference.c: Update tree_pass descriptors.
> 	* tree-ssa-uncprop.c: Update tree_pass descriptors.
> 	* auto-inc-dec.c: Update tree_pass descriptors.
> 	* reorg.c: Update tree_pass descriptors.
> 	* cgraphunit.c: Update tree_pass descriptors.
> 	* tree-ssa-copyrename.c: Update tree_pass descriptors.
> 	* tree-ssa-ccp.c: Update tree_pass descriptors.
> 	* df-core.c: Update tree_pass descriptors.
> 	* mode-switching.c: Update tree_pass descriptors.
> 	* tree-nomudflap.c: Update tree_pass descriptors.
> 	* modulo-sched.c: Update tree_pass descriptors.
> 	* ipa-pure-const.c: Update tree_pass descriptors.
> 	* cse.c: Update tree_pass descriptors.
> 	* web.c: Update tree_pass descriptors.
> 	* tree-stdarg.c: Update tree_pass descriptors.
> 	* tree-ssa-math-opts.c: Update tree_pass descriptors.
> 	* tree-ssa-dom.c: Update tree_pass descriptors.
> 	* tree-nrv.c: Update tree_pass descriptors.
> 	* tree-ssa-alias.c: Update tree_pass descriptors.
> 	* loop-init.c: Update tree_pass descriptors.
> 	* gimple-low.c: Update tree_pass descriptors.
> 	* ipa-inline.c: Update tree_pass descriptors.
> 	* tree-ssa-sink.c: Update tree_pass descriptors.
> 	* global.c: Update tree_pass descriptors.
> 	* ifcvt.c: Update tree_pass descriptors.
> 	* jump.c: Update tree_pass descriptors.
> 	* predict.c: Update tree_pass descriptors.
> 	* tree-ssa-loop.c: Update tree_pass descriptors.
> 	* recog.c: Update tree_pass descriptors.
> 	* dse.c: Update tree_pass descriptors.
> 	* tree-ssa-ifcombine.c: Update tree_pass descriptors.
> 	* tree-eh.c: Update tree_pass descriptors.
> 	* regmove.c: Update tree_pass descriptors.
> 	* local-alloc.c
> 	* function.c: Update tree_pass descriptors.
> 	* tree-vectorizer.c: Update tree_pass descriptors.
> 	* gcse.c: Update tree_pass descriptors.
> 	* ipa-type-escape.c: Update tree_pass descriptors.
> 	* tree-if-conv.c: Update tree_pass descriptors.
> 	* init-regs.c: Update tree_pass descriptors.
> 	* ipa.c: Update tree_pass descriptors.
> 	* tree-ssa-phiopt.c: Update tree_pass descriptors.
> 	* rtl-factoring.c: Update tree_pass descriptors.
> 	* lower-subreg.c: Update tree_pass descriptors.
> 	* bt-load.c: Update tree_pass descriptors.
> 	* tree-dfa.c: Update tree_pass descriptors.
> 	* except.c: Update tree_pass descriptors.
> 	* emit-rtl.c: Update tree_pass descriptors.
> 	* cfgexpand.c: Update tree_pass descriptors.
> 	* tree-cfgcleanup.c: Update tree_pass descriptors.
> 	* cfgcleanup.c: Update tree_pass descriptors.
> 	* tree-ssa-pre.c: Update tree_pass descriptors.
> 	* tree-sra.c: Update tree_pass descriptors.
> 	* tree-mudflap.c: Update tree_pass descriptors.
> 	* tree-ssa-copy.c: Update tree_pass descriptors.
> 	* cfglayout.c: Update tree_pass descriptors.
> 	* tree-ssa-forwprop.c: Update tree_pass descriptors.
> 	* tree-ssa-dce.c: Update tree_pass descriptors.
> 	* tree-ssa.c: Update tree_pass descriptors.
> 	* regclass.c: Update tree_pass descriptors.
> 	* integrate.c: Update tree_pass descriptors.
> 	* tree-optimize.c: Update tree_pass descriptors.
> 	* tree-ssa-phiprop.c: Update tree_pass descriptors.
> 	* tree-object-size.c: Update tree_pass descriptors.
> 	* combine.c: Update tree_pass descriptors.
> 	* tree-outof-ssa.c: Update tree_pass descriptors.
> 	* bb-reorder.c: Update tree_pass descriptors.
> 	* stack-ptr-mod.c: Update tree_pass descriptors.
> 	* var-tracking.c: Update tree_pass descriptors.
> 	* tree-profile.c: Update tree_pass descriptors.
> 	* tree-vect-generic.c: Update tree_pass descriptors.
> 	* reg-stack.c: Update tree_pass descriptors.
> 	* sched-rgn.c: Update tree_pass descriptors.
> 	* tree-ssa-structalias.c: Update tree_pass descriptors.
> 	* tree-cfg.c: Update tree_pass descriptors.
> 	* passes.c (current_pass): Update declaration.
> 	(finish_optimization_passes): Update.
> 	(all_passes, all_ipa_passes, all_lowering_passes): Update declaration.
> 	(register_one_dump_file, register_dump_files_1, next_pass_1):
>  	Update arguments.
> 	(init_optimization_passes): Update handling of new types.
> 	(execute_one_pass, execute_pass_list, execute_ipa_pass_list): Update.
> 	* ipa-struct-reorg.c: Update tree_pass descriptors.
> 	* tree-ssa-reassoc.c: Update tree_pass descriptors.
> 	* combine-stack-adj.c: Update tree_pass descriptors.
> 	* cfgrtl.c: Update tree_pass descriptors.
> 	* dce.c: Update tree_pass descriptors.
> 	* tree-ssanames.c: Update tree_pass descriptors.
>
> 	* testsuite/gcc.dg/20050811-2.c: Update dumping flags.
> 	* testsuite/gcc.dg/sms-2.c: Update dumping flags.
> 	* testsuite/gcc.dg/var-expand1.c: Update dumping flags.
> 	* testsuite/gcc.dg/var-expand3.c: Update dumping flags.
> 	* testsuite/gcc.dg/pr30957-1.c: Update dumping flags.
> 	* testsuite/gcc.dg/cpp/cmdlne-dD-dM.c: Update dumping flags.
> 	* testsuite/gcc.dg/cpp/cmdlne-dM-dD.c: Update dumping flags.
> 	* testsuite/gcc.dg/20050811-1.c: Update dumping flags.
>   

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

* Re: tree-pass datastructure preparation for introduction of extra  IPA hooks and removal of RTL dump letters.
  2008-03-18 20:47 tree-pass datastructure preparation for introduction of extra IPA hooks and removal of RTL dump letters Jan Hubicka
  2008-03-18 21:11 ` Kenneth Zadeck
@ 2008-03-18 22:02 ` Diego Novillo
  2008-03-20 20:47   ` Andrew Pinski
  1 sibling, 1 reply; 5+ messages in thread
From: Diego Novillo @ 2008-03-18 22:02 UTC (permalink / raw)
  To: Jan Hubicka; +Cc: gcc-patches, rguenther, zadeck

On 3/18/08 4:40 PM, Jan Hubicka wrote:
> The slightly earlier version of patch bootstrapped/regtested i686-linux, I am
> retesting after some last minute editing.  OK if it passes?

Yes, thanks.


Diego.

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

* Re: tree-pass datastructure preparation for introduction of extra IPA hooks and removal of RTL dump letters.
  2008-03-18 22:02 ` Diego Novillo
@ 2008-03-20 20:47   ` Andrew Pinski
  0 siblings, 0 replies; 5+ messages in thread
From: Andrew Pinski @ 2008-03-20 20:47 UTC (permalink / raw)
  To: Diego Novillo; +Cc: Jan Hubicka, gcc-patches, rguenther, zadeck

On Tue, Mar 18, 2008 at 2:55 PM, Diego Novillo <dnovillo@google.com> wrote:
> On 3/18/08 4:40 PM, Jan Hubicka wrote:
>  > The slightly earlier version of patch bootstrapped/regtested i686-linux, I am
>  > retesting after some last minute editing.  OK if it passes?
>
>  Yes, thanks.

This breaks -fdump-rtl-loop2 which no longer causes all of the loop2*
dumps, it only dumps loop2.
This breaks gcc.dg/var-expand3.c .

Thanks,
Andrew Pinski

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

* Re: tree-pass datastructure preparation for introduction of extra  IPA hooks and removal of RTL dump letters.
@ 2008-03-18 21:36 Uros Bizjak
  0 siblings, 0 replies; 5+ messages in thread
From: Uros Bizjak @ 2008-03-18 21:36 UTC (permalink / raw)
  To: GCC Patches; +Cc: Jan Hubicka, Diego Novillo, Richard Guenther, Kenneth Zadeck

Hello!

> The slightly earlier version of patch bootstrapped/regtested i686-linux, I am
> retesting after some last minute editing.  OK if it passes?
> 	* testsuite/gcc.dg/cpp/cmdlne-dD-dM.c: Update dumping flags.
> 	* testsuite/gcc.dg/cpp/cmdlne-dM-dD.c: Update dumping flags.

Please note that -dD, -dI, -dM and -dN represents preprocessor flags, 
the mechanical change below is wrong.

Uros.

> Index: testsuite/gcc.dg/cpp/cmdlne-dD-dM.c
> ===================================================================
> *** testsuite/gcc.dg/cpp/cmdlne-dD-dM.c	(revision 133313)
> --- testsuite/gcc.dg/cpp/cmdlne-dD-dM.c	(working copy)
> ***************
> *** 1,10 ****
>   /* Copyright (C) 2002, 2003 Free Software Foundation, Inc.  */
>   
>   /* { dg-do preprocess } */
> ! /* { dg-options "-dD -dM" } */
>   
> ! /* Test -dD -dM does not fail.  It should give the same output
> !    as plain -dM.  */
>   
>   #define foo bar
>   #define funlike(like) fun like
> --- 1,10 ----
>   /* Copyright (C) 2002, 2003 Free Software Foundation, Inc.  */
>   
>   /* { dg-do preprocess } */
> ! /* { dg-options "-dD -fdump-rtl-mach" } */
>   
> ! /* Test -dD -fdump-rtl-mach does not fail.  It should give the same output
> !    as plain -fdump-rtl-mach.  */
>   
>   #define foo bar
>   #define funlike(like) fun like
> Index: testsuite/gcc.dg/cpp/cmdlne-dM-dD.c
> ===================================================================
> *** testsuite/gcc.dg/cpp/cmdlne-dM-dD.c	(revision 133313)
> --- testsuite/gcc.dg/cpp/cmdlne-dM-dD.c	(working copy)
> ***************
> *** 1,9 ****
>   /* Copyright (C) 2002, 2003 Free Software Foundation, Inc.  */
>   
>   /* { dg-do preprocess } */
> ! /* { dg-options "-dM -dD" } */
>   
> ! /* Test -dM -dD does not fail.  It should give the same output
>      as plain -dD.  */
>   
>   #define foo bar
> --- 1,9 ----
>   /* Copyright (C) 2002, 2003 Free Software Foundation, Inc.  */
>   
>   /* { dg-do preprocess } */
> ! /* { dg-options "-fdump-rtl-mach -dD" } */
>   
> ! /* Test -fdump-rtl-mach -dD does not fail.  It should give the same output
>      as plain -dD.  */
>   
>   #define foo bar


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

end of thread, other threads:[~2008-03-20 20:32 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-03-18 20:47 tree-pass datastructure preparation for introduction of extra IPA hooks and removal of RTL dump letters Jan Hubicka
2008-03-18 21:11 ` Kenneth Zadeck
2008-03-18 22:02 ` Diego Novillo
2008-03-20 20:47   ` Andrew Pinski
2008-03-18 21:36 Uros Bizjak

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).