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