Bug 44566 - configuration with multiple targets / backends is not supported.
Summary: configuration with multiple targets / backends is not supported.
Status: UNCONFIRMED
Alias: None
Product: gcc
Classification: Unclassified
Component: middle-end (show other bugs)
Version: 4.6.0
: P3 enhancement
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords: patch
Depends on: 46489 44335 44433 46314
Blocks:
  Show dependency treegraph
 
Reported: 2010-06-17 11:33 UTC by Jorn Wolfgang Rennecke
Modified: 2010-11-15 19:48 UTC (History)
1 user (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jorn Wolfgang Rennecke 2010-06-17 11:33:51 UTC
As ramping up clock speeds becomes harder and we see more parallel cores
being used to extend Moore's Law, there is also a growing number of heterogenous
systems that have fully programmable cores with different architectures, e.g.
Cell, ARCompact / MXP, CPU / GPU combinations.

It is desirable that high-level optimizers can consider characteristics of
all the target architectures in a system to make decisions to move and/or
clone functions from one architecture to another, and then emit code - including any needed interworking glue code - for all the targeted processors.
This requires that more than one backend is linked into the compiler, and
rtl optimizers can handle different targets.

Some code will intrinsically be driven by different code/data for differet
targets, e.g. the code from config/<target> and the insn-* files will be
different.  Also, where heavy use of target or target-dependent generated
macros is made, using different object files for different targets makes sense.
To a first order of approximation, we can say trees and their passes are
target-independent, while rtl and its passes are target-dependent.
This might classify some general rtl handling code as target dependent even if this is not actually true, or if dependencies could sensibly be factored out
with new target hooks, but the only practical downside of this that that
multi-target configurations will have larger binaries than necessary.
Once the basic infrastructure is in place, each module that is marked as
target specific can be scrutinized if it actually is - or can be reasonably
made - target independent.

The interface of our target hooks will need a few changes.  'enum machine_mode'
will have to be generated to include modes for all the targets, so that the
same value means the same across all targets on which the mode exists.
On the other hand, types 'enum reg_class' are intrinsically target-specific.
different enums can have different width, so in order to have a well-defined
function type that can be safely used for calls, the targetm member
declarations have to use an integer type for such argument / return values.

This PR depends on PR44433 inasmuch as using namespaces to separate multiple
copies of middle end / rtl-optimizer modules requires that at least one
language front end can be built using --enable-build-with-cxx, i.e. PRs
like PR44512 must be fixed as a prerequisite; if such a configuration doesn't
work for ADA that merely means that this one language can't be used for
multi-target configurations, thus PR44362 doesn't actually block.
Comment 1 Jorn Wolfgang Rennecke 2010-06-17 11:40:46 UTC
(In reply to comment #0)
> multi-target configurations, thus PR44362 doesn't actually block.

Sorry, I meant PR44431.  But then, the remaining part of PR44362 also
doesn't block PR44566 (and not PR44433 either).

Comment 2 joseph@codesourcery.com 2010-06-17 14:28:12 UTC
Subject: Re:   New: configuration with multiple targets
 / backends is not supported.

On Thu, 17 Jun 2010, amylaar at gcc dot gnu dot org wrote:

> To a first order of approximation, we can say trees and their passes are
> target-independent, while rtl and its passes are target-dependent.

There are many target macros used outside of the RTL passes, including in 
front ends, GIMPLE code, the driver, collect2 and libgcc, and all of these 
would need to become hooks (or in the case of libgcc, target macros in a 
separate set of headers under the toplevel libgcc/ directory so that 
different headers can be used in the libgcc builds for different targets).  
You'll need to figure out how to identify every macro used in those parts 
of the compiler and convert it to a hook [*] (at least to the intermediate 
stage of a default definition in targhooks.c that uses the macro, if you 
build targhooks.c multiple times in your scheme).  I'm not sure there's 
much real benefit in distinguishing target macros by where they are used; 
every one of them should end up being converted to a hook anyway (with 
appropriate LTO work to ensure effective devirtualization is possible in a 
single-target compiler).  If you have a good way to identify target macros 
(including those set at configure time rather than in tm.h headers) and 
macros defined indirectly depending on target macros, then you can work 
out exactly what does use them.

[*] The correct conversion is not always a one-to-one conversion where a 
single hook replaces a single macro.

Work will also be needed outside the compiler, e.g. in the assembler which 
entirely uses macros rather than hook at present, unless you arrange for 
separately built assemblers for different targets to be called for the 
code for each target.

Comment 3 Jorn Wolfgang Rennecke 2010-06-25 18:44:56 UTC
Subject: Bug 44566

Author: amylaar
Date: Fri Jun 25 18:44:18 2010
New Revision: 161401

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=161401
Log:
        PR other/44566
        * function.h (target-gtypes.h): Include.
        (struct function): New member target_arch.
        * Makefile.in (TARGET_NUM): New Makefile variable.
        (cs-tm.h): Add TARGET_NUM to DEFINES.
        (GTFILES): Add target-gtypes.h.

        * function.h (struct incoming_args): Use type cumulative_args_u for
        member info.
        (INCOMING_ARGS_INFO): Define.
        * Makefile.in (target-gtypes.h, s-target-gtypes): New rules.

        * function.c (assign_parms): Use INCOMING_ARGS_INFO.

        * config/alpha/alpha.c (entire file): Replace crtl->args.info with
        INCOMING_ARGS_INFO (crtl->args).
        * config/xtensa/xtensa.c: Likewise.
        * config/sh/sh.md: Likewise.
        * config/sh/sh.c: Likewise.
        * config/arc/arc.c: Likewise.
        * config/mmix/mmix.c: Likewise.
        * config/m68hc11/m68hc11.c: Likewise.
        * config/sparc/sparc.c: Likewise.
        * config/ia64/ia64.c: Likewise.
        * config/avr/avr.c: Likewise.
        * config/stormy16/stormy16.c: Likewise.
        * config/iq2000/iq2000.c: Likewise.
        * config/frv/frv.c: Likewise.
        * config/mips/mips.c: Likewise.
        * config/spu/spu.c: Likewise.
        * config/v850/v850.c: Likewise.
        * config/s390/s390.c: Likewise.
        * config/rs6000/rs6000.c: Likewise.
        * config/arm/arm.c: Likewise.
        * config/i386/i386.c: Likewise.

Modified:
    branches/multi-target-20100625-branch/gcc/ChangeLog
    branches/multi-target-20100625-branch/gcc/Makefile.in
    branches/multi-target-20100625-branch/gcc/config/alpha/alpha.c
    branches/multi-target-20100625-branch/gcc/config/arc/arc.c
    branches/multi-target-20100625-branch/gcc/config/arm/arm.c
    branches/multi-target-20100625-branch/gcc/config/avr/avr.c
    branches/multi-target-20100625-branch/gcc/config/frv/frv.c
    branches/multi-target-20100625-branch/gcc/config/i386/i386.c
    branches/multi-target-20100625-branch/gcc/config/ia64/ia64.c
    branches/multi-target-20100625-branch/gcc/config/iq2000/iq2000.c
    branches/multi-target-20100625-branch/gcc/config/m68hc11/m68hc11.c
    branches/multi-target-20100625-branch/gcc/config/mips/mips.c
    branches/multi-target-20100625-branch/gcc/config/mmix/mmix.c
    branches/multi-target-20100625-branch/gcc/config/rs6000/rs6000.c
    branches/multi-target-20100625-branch/gcc/config/s390/s390.c
    branches/multi-target-20100625-branch/gcc/config/sh/sh.c
    branches/multi-target-20100625-branch/gcc/config/sh/sh.md
    branches/multi-target-20100625-branch/gcc/config/sparc/sparc.c
    branches/multi-target-20100625-branch/gcc/config/spu/spu.c
    branches/multi-target-20100625-branch/gcc/config/stormy16/stormy16.c
    branches/multi-target-20100625-branch/gcc/config/v850/v850.c
    branches/multi-target-20100625-branch/gcc/config/xtensa/xtensa.c
    branches/multi-target-20100625-branch/gcc/function.c
    branches/multi-target-20100625-branch/gcc/function.h
    branches/multi-target-20100625-branch/gcc/target.h

Comment 4 Jorn Wolfgang Rennecke 2010-06-25 19:00:50 UTC
Subject: Bug 44566

Author: amylaar
Date: Fri Jun 25 19:00:34 2010
New Revision: 161404

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=161404
Log:
        PR other/44566
        * function.h (MACHINE_FUNCTION): Define.
        * Makefile.in (target-gtypes.h): Add machine_function_u definition.

        * function.h (struct function): Use machine_function_u for member
        machine.
        * function.c (free_after_compilation): Use MACHINE_FUNCTION.
        (allocate_struct_function): Likewise.
        * doc/tm.texi: Adjust struct machine_function documentation.

        * config/alpha/alpha.c (entire file): Replace cfun->machine with
        MACHINE_FUNCTION (*cfun).
        * config/xtensa/xtensa.c: Likewise.
        * config/pa/pa.c: Likewise.
        * config/mmix/mmix.md: Likewise.
        * config/mmix/mmix.c: Likewise.
        * config/sparc/sparc.c: Likewise.
        * config/bfin/bfin.c: Likewise.
        * config/moxie/moxie.c: Likewise.
        * config/ia64/ia64.md: Likewise.
        * config/ia64/ia64.c: Likewise.
        * config/mep/mep.c: Likewise.
        * config/m32c/m32c.c: Likewise.
        * config/cris/cris.c: Likewise.
        * config/avr/avr.c: Likewise.
        * config/avr/avr.md: Likewise.
        * config/iq2000/iq2000.c: Likewise.
        * config/frv/frv.c: Likewise.
        * config/mips/mips.h: Likewise.
        * config/mips/sde.h: Likewise.
        * config/mips/mips.c: Likewise.
        * config/s390/s390.c: Likewise.
        * config/rs6000/rs6000.c: Likewise.
        * config/arm/arm.c: Likewise.
        * config/arm/arm.md: Likewise.
        * config/arm/arm.h: Likewise.
        * config/i386/i386.h: Likewise.
        * config/i386/i386.c: Likewise.
        * config/i386/cygming.h: Likewise.

Modified:
    branches/multi-target-20100625-branch/gcc/ChangeLog
    branches/multi-target-20100625-branch/gcc/Makefile.in
    branches/multi-target-20100625-branch/gcc/config/alpha/alpha.c
    branches/multi-target-20100625-branch/gcc/config/arm/arm.c
    branches/multi-target-20100625-branch/gcc/config/arm/arm.h
    branches/multi-target-20100625-branch/gcc/config/arm/arm.md
    branches/multi-target-20100625-branch/gcc/config/avr/avr.c
    branches/multi-target-20100625-branch/gcc/config/avr/avr.md
    branches/multi-target-20100625-branch/gcc/config/bfin/bfin.c
    branches/multi-target-20100625-branch/gcc/config/cris/cris.c
    branches/multi-target-20100625-branch/gcc/config/frv/frv.c
    branches/multi-target-20100625-branch/gcc/config/i386/cygming.h
    branches/multi-target-20100625-branch/gcc/config/i386/i386.c
    branches/multi-target-20100625-branch/gcc/config/i386/i386.h
    branches/multi-target-20100625-branch/gcc/config/ia64/ia64.c
    branches/multi-target-20100625-branch/gcc/config/ia64/ia64.md
    branches/multi-target-20100625-branch/gcc/config/iq2000/iq2000.c
    branches/multi-target-20100625-branch/gcc/config/m32c/m32c.c
    branches/multi-target-20100625-branch/gcc/config/mep/mep.c
    branches/multi-target-20100625-branch/gcc/config/mips/mips.c
    branches/multi-target-20100625-branch/gcc/config/mips/mips.h
    branches/multi-target-20100625-branch/gcc/config/mips/sde.h
    branches/multi-target-20100625-branch/gcc/config/mmix/mmix.c
    branches/multi-target-20100625-branch/gcc/config/mmix/mmix.md
    branches/multi-target-20100625-branch/gcc/config/moxie/moxie.c
    branches/multi-target-20100625-branch/gcc/config/pa/pa.c
    branches/multi-target-20100625-branch/gcc/config/rs6000/rs6000.c
    branches/multi-target-20100625-branch/gcc/config/s390/s390.c
    branches/multi-target-20100625-branch/gcc/config/sparc/sparc.c
    branches/multi-target-20100625-branch/gcc/config/xtensa/xtensa.c
    branches/multi-target-20100625-branch/gcc/doc/tm.texi
    branches/multi-target-20100625-branch/gcc/function.c
    branches/multi-target-20100625-branch/gcc/function.h

Comment 5 Jorn Wolfgang Rennecke 2010-06-25 19:13:16 UTC
Subject: Bug 44566

Author: amylaar
Date: Fri Jun 25 19:12:37 2010
New Revision: 161408

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=161408
Log:
        PR other/44566
        * coretypes.h [!USED_FOR_TARGET] (reg_class_t): Define.
        * target.h (struct gcc_target): Replace enum reg_class with
        reg_class_t in hook argument / return types.
        * doc/tm.texi (TARGET_SECONDARY_RELOAD): Likewise.
        (TARGET_IRA_COVER_CLASSES, TARGET_MEMORY_MOVE_COST): Likewise.
        (TARGET_BRANCH_TARGET_REGISTER_CLASS): Likewise.
        * targhooks.h (default_branch_target_register_class): Likewise.
        (default_ira_cover_classes, default_secondary_reload): Likewise.
        (default_memory_move_cost): Likewise.
        * targhooks.c (default_branch_target_register_class): Likewise.
        (default_ira_cover_classes, default_secondary_reload): Likewise.
        (default_memory_move_cost): Likewise.
        * reload.c (push_secondary_reload, secondary_reload_class): Likewise.
        * bt-load.c (branch_target_load_optimize): Likewise.
        * ira.c (setup_cover_and_important_classes): Likewise.
        * ira-costs.c (copy_cost): Likewise.
        * reload1.c (emit_input_reload_insns): Likewise.
        * config/alpha/alpha.c (alpha_secondary_reload): Likewise.
        * config/frv/frv.c (frv_secondary_reload): Likewise.
        * config/s390/s390.c (s390_secondary_reload): Likewise.
        * config/i386/i386.c (i386_ira_cover_classes): Likewise.
        (ix86_secondary_reload, ix86_memory_move_cost): Likewise.
        * config/sh/sh-protos.h (sh_secondary_reload): Likewise.
        * config/sh/sh.c (sh_target_reg_class, sh_secondary_reload): Likewise.
        * config/xtensa/xtensa.c (xtensa_secondary_reload): Likewise.
        * config/xtensa/xtensa-protos.h (xtensa_secondary_reload): Likewise.
        * config/rs6000/rs6000.c (rs6000_secondary_reload): Likewise.
        (rs6000_ira_cover_classes): Likewise.
        * config/picochip/picochip.c (picochip_secondary_reload): Likewise.
        * config/picochip/picochip-protos.h (picochip_secondary_reload):
        Likewise.
        * config/pa/pa.c (pa_secondary_reload): Likewise.
        * config/mips/mips.c (mips_ira_cover_classes): Likewise.
        * config/bfin/bfin.c (bfin_secondary_reload): Likewise.

Modified:
    branches/multi-target-20100625-branch/gcc/ChangeLog
    branches/multi-target-20100625-branch/gcc/bt-load.c
    branches/multi-target-20100625-branch/gcc/config/alpha/alpha.c
    branches/multi-target-20100625-branch/gcc/config/bfin/bfin.c
    branches/multi-target-20100625-branch/gcc/config/frv/frv.c
    branches/multi-target-20100625-branch/gcc/config/i386/i386.c
    branches/multi-target-20100625-branch/gcc/config/mips/mips.c
    branches/multi-target-20100625-branch/gcc/config/pa/pa.c
    branches/multi-target-20100625-branch/gcc/config/picochip/picochip-protos.h
    branches/multi-target-20100625-branch/gcc/config/picochip/picochip.c
    branches/multi-target-20100625-branch/gcc/config/rs6000/rs6000.c
    branches/multi-target-20100625-branch/gcc/config/s390/s390.c
    branches/multi-target-20100625-branch/gcc/config/sh/sh-protos.h
    branches/multi-target-20100625-branch/gcc/config/sh/sh.c
    branches/multi-target-20100625-branch/gcc/config/xtensa/xtensa-protos.h
    branches/multi-target-20100625-branch/gcc/config/xtensa/xtensa.c
    branches/multi-target-20100625-branch/gcc/coretypes.h
    branches/multi-target-20100625-branch/gcc/doc/tm.texi
    branches/multi-target-20100625-branch/gcc/ira-costs.c
    branches/multi-target-20100625-branch/gcc/ira.c
    branches/multi-target-20100625-branch/gcc/reload.c
    branches/multi-target-20100625-branch/gcc/reload1.c
    branches/multi-target-20100625-branch/gcc/target.h
    branches/multi-target-20100625-branch/gcc/targhooks.c
    branches/multi-target-20100625-branch/gcc/targhooks.h

Comment 6 Jorn Wolfgang Rennecke 2010-06-25 21:33:30 UTC
Subject: Bug 44566

Author: amylaar
Date: Fri Jun 25 21:33:02 2010
New Revision: 161417

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=161417
Log:
	PR other/44566
gcc:
	* configure.ac: When --with-extra-target-list is given, ensure
	--enable-build-with-cxx is active.
	* configure: Regenerate.
gcc/gcc:
	* multi-target.h, README-multi-target, any-lang.c: New files.
	* addresses.h: Include "multi-target.h" and add START_TARGET_SPECIFIC
	and END_TARGET_SPECIFC markers.
	* alias.c, alias.h, auto-inc-dec.c, basic-block.h: Likewise.
	* bb-reorder.c, bt-load.c, builtins.c, caller-save.c: Likewise.
	* calls.c, cfganal.c, cfgbuild.c, cfg.c, cfgcleanup.c: Likewise.
	* cfgexpand.c, cfghooks.c, cfghooks.h, cfglayout.c: Likewise.
	* cfglayout.h, cfgloopanal.c, cfgloop.h, cfgrtl.c, combine.c: Likewise.
	* combine-stack-adj.c, cse.c, cselib.c, cselib.h, dbxout.c: Likewise.
	* dbxout.h, dce.c, dce.h, ddg.c, ddg.h, df-byte-scan.c: Likewise.
	* df-core.c, df.h, df-problems.c, df-scan.c, dojump.c, dse.c: Likewise.
	* dwarf2asm.c, dwarf2asm.h, dwarf2out.c, dwarf2out.h: Likewise.
	* emit-rtl.c, except.c, except.h, explow.c, expmed.c, expr.c: Likewise.
	* expr.h, final.c, fixed-value.h, flags.h, function.c: Likewise.
	* function.h, fwprop.c, gcse.c, ggc.h, gimple.h, graph.c: Likewise.
	* haifa-sched.c, hard-reg-set.h, ifcvt.c, implicit-zee.c: Likewise.
	* init-regs.c, insn-addr.h, integrate.c, ira-build.c, ira.c: Likewise.
	* ira-color.c, ira-conflicts.c, ira-costs.c, ira-emit.c: Likewise.
	* ira.h, ira-int.h, ira-lives.c, jump.c, loop-doloop.c: Likewise.
	* loop-init.c, loop-invariant.c, loop-iv.c, loop-unroll.c: Likewise.
	* loop-unswitch.c, lower-subreg.c, machmode.h: Likewise.
	* mode-switching.c, modulo-sched.c, optabs.c, optabs.h: Likewise.
	* opts.c, output.h, passes.c, postreload.c: Likewise.
	* postreload-gcse.c, predict.c, predict.h, print-rtl.c: Likewise.
	* recog.c, recog.h, regcprop.c, reginfo.c, regmove.c: Likewise.
	* regrename.c, regset.h, regs.h, reg-stack.c, regstat.c: Likewise.
	* reload1.c, reload.c, reload.h, reorg.c, resource.c: Likewise.
	* resource.h, rtlanal.c, rtl.c, rtl.h, rtlhooks.c: Likewise.
	* rtlhooks-def.h, sched-deps.c, sched-ebb.c, sched-int.h: Likewise.
	* sched-rgn.c, sched-vis.c, sdbout.c, sel-sched.c: Likewise.
	* sel-sched-dump.c, sel-sched-dump.h, sel-sched-ir.c: Likewise.
	* sel-sched-ir.h, simplify-rtx.c, stack-ptr-mod.c, stmt.c: Likewise.
	* store-motion.c, stor-layout.c, target.h, targhooks.c: Likewise.
	* targhooks.h, toplev.c, toplev.h, tree-flow.h, tree.h: Likewise.
	* tree-pass.h, tree-ssa-address.c, tree-ssa-loop-manip.c: Likewise.
	* varasm.c, var-tracking.c, web.c, config/sh/sh.c: Likewise.
	* config/sh/sh.h, config/sh/sh-protos.h, config/spu/spu.c: Likewise.
	* config/spu/spu.h, config/rs6000/rs6000.h: Likewise.
	* config/rs6000/rs6000.c: Likewise.

	* calls.c: Add #ifndef EXTRA_TARGET / #endif directives.
	* cfgexpand.c, cfghooks.c, df-core.c, emit-rtl.c, explow.c: Likewise.
	* expr.c, function.c, gcse.c, gengtype-parse.c, optabs.c: Likewise.
	* opts.c, passes.c, reginfo.c, regstat.c, stor-layout.c: Likewise.
	* targhooks.c, toplev.c, tree-scalar-evolution.h: Likewise.
	* tree-ssa-address.c, varasm.c

	* T-extra.in: New file, broken out of:
	* Makefile.in.
	* T-extra.in: Use $(CURRENT_TARGET) prefix for names of variables
	that are set.

	* doc/extend.texi (target_arch): Document new attribute.
	* doc/tm.texi: Adjust struct machine_function documentation.

	* targhooks.c: Include diagnostic.h, tree-pass.h and
	tree-pretty-print.h.
	(default_branch_target_register_class): Remove enum reg_class from
	interface.
	(default_ira_cover_classes, default_secondary_reload): Likewise
	(default_override_options): New function.
	(default_task_ok_for_target): Likewise.
	(default_common_data_with_target): Likewise.
	(default_vectype_for_scalar_type): Likewise, using code from
	tree-vect-stmts.c:get_vectype_for_scalar_type.
	(default_addr_space_valid_pointer_mode): Use this_targetm.
	(default_addr_space_legitimate_address_p): Likewise.
	(default_target_option_valid_attribute_p): Look up name of target.
	(default_branch_target_register_class): Remove enum reg_class from
	interface.
	(default_ira_cover_classes, default_secondary_reload): Likewise.
	(default_override_options, default_vectype_for_scalar_type): Declare.
	(default_task_ok_for_target): Likewise.
	(default_common_data_with_target): Likewise.
	* regstat.c (setjmp_crosses): No longer static.  Declare extern.

	* doc/install.texi (Target specification): Document
	--with-extra-target-list.

	* genrecog.c (write_header, main): Make generated file include
	"multi-target.h" and have START_TARGET_SPECIFIC and END_TARGET_SPECIFC
	markers.
	* gengenrtl.c (genheader): Likewise.
	* genopinit (main): Likewise.
	* genoutput.c (output_prologue, main): Likewise.
	* genextract.c (print_header, main): Likewise.
	* genautomata.c (main): Likewise.
	* genemit.c (main): Likewise.
	* genpeep.c (main): Likewise.
	* genattrtab.c (main): Likewise.
	* genattr (gen_attr, main): Likewise.
	* optc-gen.awk: Likewise.
	* genmodes.c (emit_insn_modes_c_header, emit_insn_modes_c): Likewise.
	(emit_min_insn_modes_c_header, emit_min_insn_modes_c): Likewise.
	* genflags.c (main): Likewise.
	* genpreds.c (write_tm_constrs_h): Likewise.
	(write_tm_preds_h): Likewise.
	(write_insn_preds_c): Likewise.
	* opth-gen.awk: Likewise.

	* gcc/gcc/c-family/c-common.c (handle_target_arch_attribute):
	New function.
	(handle_caller_arch_attribute): Likewise.
	(c_common_attribute_table): Add target_arch and caller_arch.
	(handle_target_attribute): Call the valid_attribute_p of the
	target architecture the function belongs to.

	* gengtype.c (IS_EXTRA_TARGET): Define.
	(struct type): Move potentially narrow enums together.
	Add type_specific field.
	(string_type, scalar_nonchar, scalar_char): Update initializers.
	(ttags_file): New file-scope static variable.
	(read_input_list): For IS_EXTRA_TARGET, anticipate a [target_files]
	delimiter, to put all the target-specific files into 'language' 0.
	(new_structure, find_structure): Initialize target_specific field.
	(create_file): Update copyright notice.
	(write_rtx_next, open_base_files): Emit
	START_TARGET_SPECIFIC / END_TARGET_SPECIFIC for gtype_desc_c.
	(open_base_files): Add include of "multi-target.h" to ifiles.
	For IS_EXTRA_TARGET, create gtype-ttags.h.
	(relevant_type_p): New function.
	(write_types_process_field, output_type_enum): For IS_EXTRA_TARGET,
	augment mangling with target name.
	(write_enum_defn, write_splay_tree_allocator_def): Likewise.
	(write_types, write_local): Only perform output for relevant types.
	(write_enum_defn, write_splay_tree_allocators): Likewise.
	(write_func_for_structure): Likewise.  Remove FIXME kludge.
	(write_enum_defn): For IS_EXTRA_TARGET, place enumerators into
	separate file ttags_file, and include multi-target.h and
	../gtype-desc.h in header_file.
	(main): For IS_EXTRA_TARGET, wrap declarations / defintions in
	START_TARGET_SPECIFIC / END_TARGET_SPECIFIC.
	* mkconfig.sh <DEFINES processing>: Handle defines with parameters.
	<HEADERS processing>: Wrap config/FOO/FOO-protos.h in
	START_TARGET_SPECIFIC / END_TARGET_SPECIFIC.
	* gengtype.h (pp_nest, no_extra_nest, target_specific): Declare.
	(get_output_file_name): Likewise.
	* optabs.c [!EXTRA_TARGET] (optab_for_tree_code_array): New array.
	(optab_for_tree_code): Rename to...
	(optab_for_tree_code_1) ... this.
	* tree-ssa-loop-manip.c: Include target.h.
	(rewrite_phi_with_iv): Use targetm.sizetype_tab.
	* optabs.h: Include target.h.  Make types at start of file
	non-target- specific.
	(optab_for_tree_code_1, optab_for_tree_code_array): Declare.
	(optab_for_tree_code): Now a static inline function.
	* reload.c (push_secondary_reload): Remove enum reg_class from
	target hook interface.
	(secondary_reload_class): Likewise.
	* tree-pass.h (rtl_dispatch_pass): New struct.
	(TODO_arch_dispatch): New TODO flag.
	(pass_expand): Change type to rtl_dispatch_pass.
	* target.h (struct gimple_stmt_iterator_d): Add orward declaration.
	(enum task_type): New enum.
	(struct gcc_target): New members name, target_arch, sizetype_tab,
	optab_table, task_ok_for_target, common_data_with_target,
	copy_to_target, copy_from_target, alloc_task_on_target,
	build_call_on_target and override.
	Add new member new_arch to member asm_out.  Add new member
	vectype_for_scalar_type to member vectorize.
	Remove enum reg_class from target hook interface.
	(targetm_pnt, targetm_array, this_targetm): Declare.
	(targetm): Now a macro.
	* cfghooks.c (cfg_hooks): No longer static; shared across targets.
	* toplev.c [!EXTRA_TARGET] (targetm_array, targetm_pnt): Define and
	inititialize.
	(init_random_seed, process_options, backend_init): No longer static.
	(general_init): Add ATTRIBUTE_UNUSED to argv0.
	(process_options) [!EXTRA_TARGET]: Disable target-independent option
	processing.  Use target_option.override hook.
	(backend_init): Use EXTRA_TARGETS_CALL to backend_init on extra targets.
	(lang_dependent_init): No longer static.  Make EXTRA_TARGETS_CALL on
	initialize_sizetypes lang_dependent_init.
	[EXTRA_TARGET]: Fix up sizetype if it has wrong mode.
	(target_reinit): Do EXTRA_TARGETS_CALL to self.
	(do_compile): Do EXTRA_TARGETS_CALL to process_options.
	* toplev.h (init_random_seed): Declare.
	* tree-ssa-loop-ivopts.c (computation_cost): Use tree_expand_expr.
	(force_expr_to_var_cost): Use targetm.sizetype.
	(rewrite_use_address): Use tree_create_mem_ref.
	* gengtype-lex.l: Use extra options stack and noyy_top_state.
	(pp_nest, no_extra_nest, target_specific): New variables.
	(in_struct_comment): Remove state.
	(start_pp_directive, in_pp_directive, pp_scanning): New states.
	(*): Allow to skip #ifndef EXTRA_TARGET sections.
	(INITIAL): Recognize START_TARGET_SPECIFIC / END_TARGET_SPECIFIC
	to turn target_specific on and off.
	(TARGET_SCOPE/{EOID}): New pattern.
	* machmode.def (EXTRA_MODES_FILE): Replace with:
	("extra-modes.h")
	* expr.c (expand_expr_real_1): Use CRTL_ASM_CLOBBERS.
	[!EXTRA_TARGET] (tree_expand_expr): New function.
	(build_personality_function): Use a pointer type with the current
	targets mode.
	* expr.h (tree_expand_expr): Declare.
	* opts.c (decode_options): Use this_targetm for target-specific
	processing.  Do an EXTRA_TARGETS_CALL of self.
	* optc-gen.awk: Add an extra pass to scan for Init.
	* tree-ssa-address.c (tree_create_mem_ref): New function.
	* configure.ac (all_outputs): Add T-extra.
	(with_extra_target_list): New AC_SUBST.
	* configure: Regenerate.
	* function.c (allocate_struct_function_1): New function, broken out of:
	(allocate_struct_function).
	(free_after_compilation): Use MACHINE_FUNCTION.
	(allocate_struct_function_1): Likewise.
	(assign_parms): Use INCOMING_ARGS_INFO.
	(set_cfun): Update target_pnt.
	[!EXTRA_TARGET] (allocate_struct_function_1_array): New const array.
	(lookup_attr_target): New function, broken out of:
	(allocate_struct_function).
	[EXTRA_TARGET] (allocate_struct_function): Don't define.
	(allocate_struct_function): Initialize cfun->target_arch and set
	targetm_pnt.
	(init_emit_array): Declare.
	[!EXTRA_TARGET] (init_emit_array): Define and initialize.
	(prepare_function_start): Call the init_emit function for
	cfun->target_arch.
	(init_function_start): Do an EXTRA_TARGETS_CALL to self.
	* function.h: Include target-types / target-gtypes.h.
	(incoming_args): Use cumulative_args_u for info member.
	(INCOMING_ARGS_INFO, MACHINE_FUNCTION, CRTL_ASM_CLOBBERS): Define.
	(rtl_data): Define asm_clobbers as hard_reg_set_u.
	(struct function): Use machine_function_u for member machine.
	New member target_arch.
	* tree-vectorizer.h (target.h): Include.
	(get_vectype_for_scalar_type) Now a static incline function.
	* stor-layout.c (vector_type_mode_array): Declare.
	(vector_type_mode): Dispatch through vector_type_mode_array.
	[!EXTRA_TARGET]: (vector_type_mode_array): Define.
	* tree-affine.c (target.h): Include.
	(add_elt_to_tree): Use targetm.sizetype.
	(aff_combination_to_tree): Likewise.
	* gentargtype.cc: New file.
	* genmodes.c (struct mode_data): New member target.
	(blank_mode): Add initializer for new member.
	(struct mode_adjust): New member target.
	(target): New variable.
	(find_mode): Set target field for to-be searched mode.
	(new_mode): Set target member.
	(eq_mode): Also consider target.
	(new_adjust): Set target member.
	(drop_mode, fixup_target_modes): New functions.
	(make_complex_modes, make_vector_modes): When processing
	target-specific input, don't make modes for other targets.
	(make_complex_modes): Tag new modes with the same
	target field as the modes that they are made from.
	(make_partial_integer_mode): Make error message clearer.
	(calc_wider_mode, emit_mode_wider): Don't include modes from extra
	targets in the wider mode chain.
	(emit_insn_modes_h): Skip other target's modes in search
	For minimum/maximum modes.
	(emit_real_format_for_mode): Skip modes of other targets.
	(emit_mode_adjustments): Skip adjustments for other targets.
	(main): Call fixup_target_modes.
	* config/sh/sh.c (struct save_entry_s): Change type of mode to int.

	* bt-load.c (branch_target_load_optimize): Remove enum reg_class
	from target hook interface.
	* ggc-common.c (tm.h): Include.
	(gt_ggc_rtab, gt_ggc_deletable_rtab): Apply EXTRA_TARGETS_DECL.
	(gt_pch_cache_rtab, gt_pch_scalar_rtab): Likewise.
	(gt_ggc_cache_rtab): Likewise.
	(gt_ggc_rtabs, gt_ggc_deletable_rtabs): New arrays.
	(gt_pch_cache_rtabs, gt_pch_scalar_rtabs): Likewise.
	(gt_ggc_cache_rtabs): Likewise.
	(ggc_mark_roots, gt_pch_save): Iterate through new arrays.
	(gt_pch_restore): Likewise.
	* emit-rtl.c (label_num): No longer static.
	(const_int_htab, const_double_htab): Likewise.
	(gen_reg_rtx): Add assert.
	* cfgexpand.c (pass_expand): Change type to rtl_dispatch_pass.
	Add TODO_arch_dispatch flag and initializer for target_variants field.
        * tree-ssa-pre.c (next_expression_id): Initialize to 1.
        (eliminate): Check that lhsexpr has id > 0.
	* explow.c (hard_libcall_value): Use this_targetm.
        * common.opt (align_functions, align_jumps): Mark with AllTarget.
        (align_loops, flag_data_sections, flag_delayed_branch): Likewise.
        (flag_no_function_cse, flag_function_sections): Likewise.
        (flag_leading_underscore, flag_omit_frame_pointer): Likewise.
        (flag_rename_registers, flag_schedule_insns): Likewise.
        (flag_schedule_insns_after_reload): Likewise.
        * varasm.c (last_arch): New variable.
        (default_target_new_arch): New function.
        (assemble_start_function): Use asm_out.new_arch hook,
        and update last_arch.
	* ira.c (setup_cover_and_important_classes): Remove enum reg_class
	from target hook interface.  Use this_targetm and CRTL_ASM_CLOBBERS.
        * target-def.h (TARGET_ASM_NEW_ARCH): Define.
	(TARGET_VECTORIZE_VECTYPE_FOR_SCALAR_TYPE): Likewise.
	(TARGET_TASK_OK_FOR_TARGET, TARGET_COMMON_DATA_WITH_TARGET): Likewise.
	(TARGET_COPY_TO_TARGET, TARGET_COPY_FROM_TARGET): Likewise.
	(TARGET_ALLOC_TASK_ON_TARGET, TARGET_BUILD_CALL_ON_TARGET): Likewise.
	(TARGET_OVERRIDE_OPTIONS): Likewise.
	(TARGET_VECTORIZE): Add TARGET_VECTORIZE_VECTYPE_FOR_SCALAR_TYPE.
        (TARGET_OPTION_HOOKS): Include TARGET_OVERRIDE_OPTIONS.
	(TARGET_INITIALIZER): Initialize new members.
	* ira-costs.c (copy_cost): Remove enum reg_class from target hook
	interface.
	* rtl.h (struct function): Remove forward declaration.
	* tree-vect-stmts.c (vectorizable_store): Use targetm.optab_table.
	(vectorizable_load): Likewise.
	(get_vectype_for_scalar_type): Remove.
	* output.h (struct gcc_target): Add forward declaration.
	(default_target_new_arch): Declare.
	* reginfo.c (init_reg_sets): Do EXTRA_TARGETS_CALL to self.
	* Makefile.in (gcc_config_arguments, TA): New Makefile variables.
	(TARGET_NUM, OBJS-extra-target, EXTRA_TARGET_RULES): Likewise.
	(enumerate, empty, space, COMMON_ABI): Likewise.
	Include T-extra.
	(REGSET_H): Add multi-target.h.
	(OPTABS_H): Add $(TARGET_H).
	(GGC_H): Add s-extra-gty.
	(TREE_VECTORIZER_H): Remove duplicate.  Add target.h.
	[EXTRA_TARGET] (ALL_COMPILERFLAGS): Add -DEXTRA_TARGET.
	[EXTRA_TARGET] $(TA)%.o : %.c: New rule.
	(OBJS-rtl): New Makefile variable, broken out of...
	(OBJS-common).  Add $(OBJS-rtl).
	For each target, add members of $(OBJS-extra-target) and
	$($(TA)-out_object_file) with with target name prepended.
	(s-extra-gty, make-OBJS-rtl, $(TA)any-lang.o): New rules.
	(intl/config.intl, build/gentargtype.o): Likewise.
	(build/gentargtype$(build_exeext)): Likewise.
	[!EXTRA_TARGET]: For each extra target, evaluate EXTRA_TARGET_RULES,
	substituting the underscore-bearing / hyphened target name for
	any occurences of THIS_TARGET /  THIS-TARGET, and an ordinal number
	corresponding to an index into targetm_array for any occurences of
	THIS-TARGET-NUM.
	(MOSTLYCLEANFILES): Add $(TA) prefix to source files the object
	files for which appear in OBJS-rtl, and to insn-constants.h.
	(cs-tm.h): Add NUM_TARGETS, TARGET_NUM, EXTRA_TARGETS_EXPAND and
	TARGET_SCOPE_ to DEFINES.
	(cs-tm_p.h): Add $(tm_p_include_list) to HEADERS.
	(graph.o, c-family/c-opts.o): Prepend $(TA) to rule target basename.
	(options.o, gtype-desc.o): Likewise.
	(stor-layout.o, tree-ssa-address.o, opts.o, targhooks.o): Likewise.
	(toplev.o, passes.o, rtl.o, print-rtl.o, rtlanal.o): Likewise.
	(varasm.o, function.o, stmt.o, except.o, expr.o, dojump.o): Likewise.
	(builtins.o, calls.o, expmed.o, explow.o, optabs.o) : Likewise.
	(dbxout.o, sdbout.o, dwarf2out.o, dwarf2asm.o, vmsdbgout.o): Likewise.
	(emit-rtl.o, integrate.o, jump.o, simplify-rtx.o, cselib.o): Likewise.
	(cse.o, dce.o, dse.o, fwprop.o, web.o, implicit-zee.o): Likewise.
	(gcse.o, store-motion.o, resource.o, mode-switching.o): Likewise.
	(df-core.o, df-problems.o, df-scan.o, df-byte-scan.o): Likewise.
	(regstat.o, var-tracking.o, loop-doloop.o, auto-inc-dec.o): Likewise.
	(cfg.o, cfghooks.o, cfgexpand.o, cfgrtl.o, cfganal.o): Likewise.
	(cfgbuild.o, cfgcleanup.o, cfgloopanal.o, loop-iv.o): Likewise.
	(loop-invariant.o, loop-init.o, loop-unswitch.o): Likewise.
	(loop-unroll.o, combine.o, reginfo.o, reload.o, reload1.o): Likewise.
	(rtlhooks.o, postreload.o, postreload-gcse.o, caller-save.o): Likewise.
	(bt-load.o, reorg.o, alias.o, stack-ptr-mod.o, init-regs.o): Likewise.
	(ira-build.o, ira-costs.o, ira-conflicts.o, ira-color.o): Likewise.
	(ira-emit.o, ira-lives.o, ira.o, regmove.o): Likewise.
	(combine-stack-adj.o, ddg.o, modulo-sched.o, haifa-sched.o): Likewise.
	(sched-deps.o, sched-rgn.o, sched-ebb.o, sched-vis.o): Likewise.
	(sel-sched.o, sel-sched-dump.o, sel-sched-ir.o, final.o): Likewise.
	(recog.o, reg-stack.o, predict.o, bb-reorder.o, cfglayout.o): Likewise.
	(regcprop.o, regrename.o, ifcvt.o, lower-subreg.o): Likewise.
	($(out_object_file)), insn-attrtab.o, insn-automata.o): Likewise.
	(insn-emit.o, insn-enums.o, insn-extract.o, insn-modes.o): Likewise.
	(insn-opinit.o, insn-output.o, insn-peep.o, insn-preds.o): Likewise.
	(insn-recog.o, insn-modes.c, min-insn-modes.c, insn-preds.c): Likewise.
	(insn-emit.c, insn-recog.c, insn-extract.c, insn-output.c): Likewise.
	(insn-peep.c, insn-attrtab.c, insn-automata.c, insn-enums.c): Likewise.
	(insn-enums.c, insn-opinit.c): Likewise.
	($(simple_generated_c:insn-%.c=s-%)): Likewise.
	($(simple_rtl_generated_c:insn-%.c=s-%)): Likewise.
	($(simple_generated_c:insn-%.c=s-%)): Likewise.
	(ggc-common.o): Depend on $(TM_H).
	(tree-affine.o): Depend on $(TARGET_H).
	($(TA)targhooks.o): Depend on tree-pretty-print.h.
	($(TA)$(out_object_file)): Add compiler flags -Dtargetm and
	-DTARGET_NAME.
	($(simple_generated_c)): Add $(TA) prefix.
        (GTFILES-RAW): New makefile variable.  Use it to compute...
        (GTFILES) so that extra targets don't see *.c files the object files
        of which are not in $(OBJS-extra-target).
        [EXTRA_TARGET] (GTFILES): Bracket $(out_file) between [target_files]
        and [extra_target].
        (gtype-ttags.h): Depend on s-gtype.
	(build/%.o) [$(EXTRA_TARGET)]: Add -DEXTRA_TARGET to compiler flags.
        (build/gengtype.o): Add EXTRA_TARGETS_FILES and EXTRA_TARGET_STRING
        to BUILD_CPPFLAGS.
	Depend on extra-modes.h instead of $(extra_modes_file).
	[!TA] (extra-modes.h, target-types.h): New rules.
	[!TA] (EXTRA_OBJS): Include files from extra targets.
	* gimple.h (gimple_stmt_iterator_d): New struct tag.
	* passes.c (register_dump_files): No longer static.  Declare.
	(init_optimization_passes) [!EXTRA_TARGET]: Make EXTRA_TARGETS_CALL
	to self.
	(init_optimization_passes) [EXTRA_TARGET]: Start new pass list
	with pass_expand at &pass_expand.target_variants[TARGET_NUM-1];
	call register_dump_files for this pass list.
	[!EXTRA_TARGET] (execute_todo): Call df_finish_pass on target
	indicated by targetm.
	(execute_pass_list): Handle TODO_arch_dispatch.
	* reload1.c (emit_input_reload_insns): : Remove enum reg_class from
	target hook interface.

        * config/spu/spu-protos.h (spu_override_options): Don't declare.
        * config/spu/spu.c (spu_override_options): Now static.  Change
        signature to fit target hook.
        (TARGET_OVERRIDE_OPTIONS): Redefine.
        * config/spu/spu.h (OVERRIDE_OPTIONS): Don't define.

        * config/sh/sh.h (OVERRIDE_OPTIONS): Delete.
        * config/sh/sh.c (sh_override_options): Change type to match hook.
        Make manipulation of global flags dependent on main_target.
        (TARGET_OVERRIDE_OPTIONS): Redefine.

gcc/po:
	* EXCLUDES: Add gentargtype.cc.

Added:
    branches/multi-target-20100625-branch/ChangeLog.multi-target
      - copied unchanged from r161408, branches/multi-target-20100622-branch/ChangeLog.multi-target
    branches/multi-target-20100625-branch/gcc/ChangeLog.multi-target
      - copied, changed from r161408, branches/multi-target-20100622-branch/gcc/ChangeLog.multi-target
    branches/multi-target-20100625-branch/gcc/README-multi-target
      - copied unchanged from r161408, branches/multi-target-20100622-branch/gcc/README-multi-target
    branches/multi-target-20100625-branch/gcc/T-extra.in
      - copied unchanged from r161408, branches/multi-target-20100622-branch/gcc/T-extra.in
    branches/multi-target-20100625-branch/gcc/any-lang.c
      - copied unchanged from r161408, branches/multi-target-20100622-branch/gcc/any-lang.c
    branches/multi-target-20100625-branch/gcc/gentargtype.cc
      - copied unchanged from r161408, branches/multi-target-20100622-branch/gcc/gentargtype.cc
    branches/multi-target-20100625-branch/gcc/multi-target.h
      - copied unchanged from r161408, branches/multi-target-20100622-branch/gcc/multi-target.h
Modified:
    branches/multi-target-20100625-branch/   (props changed)
    branches/multi-target-20100625-branch/configure
    branches/multi-target-20100625-branch/configure.ac
    branches/multi-target-20100625-branch/gcc/Makefile.in
    branches/multi-target-20100625-branch/gcc/addresses.h
    branches/multi-target-20100625-branch/gcc/alias.c
    branches/multi-target-20100625-branch/gcc/alias.h
    branches/multi-target-20100625-branch/gcc/auto-inc-dec.c
    branches/multi-target-20100625-branch/gcc/basic-block.h
    branches/multi-target-20100625-branch/gcc/bb-reorder.c
    branches/multi-target-20100625-branch/gcc/bt-load.c
    branches/multi-target-20100625-branch/gcc/builtins.c
    branches/multi-target-20100625-branch/gcc/c-family/c-ada-spec.c   (props changed)
    branches/multi-target-20100625-branch/gcc/c-family/c-ada-spec.h   (props changed)
    branches/multi-target-20100625-branch/gcc/c-family/c-common.c   (contents, props changed)
    branches/multi-target-20100625-branch/gcc/c-family/c-common.def   (props changed)
    branches/multi-target-20100625-branch/gcc/c-family/c-common.h   (props changed)
    branches/multi-target-20100625-branch/gcc/c-family/c-cppbuiltin.c   (props changed)
    branches/multi-target-20100625-branch/gcc/c-family/c-dump.c   (props changed)
    branches/multi-target-20100625-branch/gcc/c-family/c-format.c   (props changed)
    branches/multi-target-20100625-branch/gcc/c-family/c-format.h   (props changed)
    branches/multi-target-20100625-branch/gcc/c-family/c-gimplify.c   (props changed)
    branches/multi-target-20100625-branch/gcc/c-family/c-lex.c   (props changed)
    branches/multi-target-20100625-branch/gcc/c-family/c-omp.c   (props changed)
    branches/multi-target-20100625-branch/gcc/c-family/c-opts.c   (props changed)
    branches/multi-target-20100625-branch/gcc/c-family/c-pch.c   (props changed)
    branches/multi-target-20100625-branch/gcc/c-family/c-ppoutput.c   (props changed)
    branches/multi-target-20100625-branch/gcc/c-family/c-pragma.c   (props changed)
    branches/multi-target-20100625-branch/gcc/c-family/c-pragma.h   (props changed)
    branches/multi-target-20100625-branch/gcc/c-family/c-pretty-print.c   (props changed)
    branches/multi-target-20100625-branch/gcc/c-family/c-pretty-print.h   (props changed)
    branches/multi-target-20100625-branch/gcc/c-family/c-semantics.c   (props changed)
    branches/multi-target-20100625-branch/gcc/c-family/c.opt   (props changed)
    branches/multi-target-20100625-branch/gcc/c-family/stub-objc.c   (props changed)
    branches/multi-target-20100625-branch/gcc/caller-save.c
    branches/multi-target-20100625-branch/gcc/calls.c
    branches/multi-target-20100625-branch/gcc/cfg.c
    branches/multi-target-20100625-branch/gcc/cfganal.c
    branches/multi-target-20100625-branch/gcc/cfgbuild.c
    branches/multi-target-20100625-branch/gcc/cfgcleanup.c
    branches/multi-target-20100625-branch/gcc/cfgexpand.c
    branches/multi-target-20100625-branch/gcc/cfghooks.c
    branches/multi-target-20100625-branch/gcc/cfghooks.h
    branches/multi-target-20100625-branch/gcc/cfglayout.c
    branches/multi-target-20100625-branch/gcc/cfglayout.h
    branches/multi-target-20100625-branch/gcc/cfgloop.h
    branches/multi-target-20100625-branch/gcc/cfgloopanal.c
    branches/multi-target-20100625-branch/gcc/cfgrtl.c
    branches/multi-target-20100625-branch/gcc/combine-stack-adj.c
    branches/multi-target-20100625-branch/gcc/combine.c
    branches/multi-target-20100625-branch/gcc/common.opt
    branches/multi-target-20100625-branch/gcc/config/rs6000/rs6000.c
    branches/multi-target-20100625-branch/gcc/config/rs6000/rs6000.h
    branches/multi-target-20100625-branch/gcc/config/sh/sh-protos.h
    branches/multi-target-20100625-branch/gcc/config/sh/sh.c
    branches/multi-target-20100625-branch/gcc/config/sh/sh.h
    branches/multi-target-20100625-branch/gcc/config/spu/spu-protos.h
    branches/multi-target-20100625-branch/gcc/config/spu/spu.c
    branches/multi-target-20100625-branch/gcc/config/spu/spu.h
    branches/multi-target-20100625-branch/gcc/configure
    branches/multi-target-20100625-branch/gcc/configure.ac
    branches/multi-target-20100625-branch/gcc/cse.c
    branches/multi-target-20100625-branch/gcc/cselib.c
    branches/multi-target-20100625-branch/gcc/cselib.h
    branches/multi-target-20100625-branch/gcc/dbxout.c
    branches/multi-target-20100625-branch/gcc/dbxout.h
    branches/multi-target-20100625-branch/gcc/dce.c
    branches/multi-target-20100625-branch/gcc/dce.h
    branches/multi-target-20100625-branch/gcc/ddg.c
    branches/multi-target-20100625-branch/gcc/ddg.h
    branches/multi-target-20100625-branch/gcc/df-byte-scan.c
    branches/multi-target-20100625-branch/gcc/df-core.c
    branches/multi-target-20100625-branch/gcc/df-problems.c
    branches/multi-target-20100625-branch/gcc/df-scan.c
    branches/multi-target-20100625-branch/gcc/df.h
    branches/multi-target-20100625-branch/gcc/doc/extend.texi
    branches/multi-target-20100625-branch/gcc/doc/install.texi
    branches/multi-target-20100625-branch/gcc/dojump.c
    branches/multi-target-20100625-branch/gcc/dse.c
    branches/multi-target-20100625-branch/gcc/dwarf2asm.c
    branches/multi-target-20100625-branch/gcc/dwarf2asm.h
    branches/multi-target-20100625-branch/gcc/dwarf2out.c
    branches/multi-target-20100625-branch/gcc/dwarf2out.h
    branches/multi-target-20100625-branch/gcc/emit-rtl.c
    branches/multi-target-20100625-branch/gcc/emit-rtl.h
    branches/multi-target-20100625-branch/gcc/except.c
    branches/multi-target-20100625-branch/gcc/except.h
    branches/multi-target-20100625-branch/gcc/explow.c
    branches/multi-target-20100625-branch/gcc/expmed.c
    branches/multi-target-20100625-branch/gcc/expr.c
    branches/multi-target-20100625-branch/gcc/expr.h
    branches/multi-target-20100625-branch/gcc/final.c
    branches/multi-target-20100625-branch/gcc/fixed-value.h
    branches/multi-target-20100625-branch/gcc/flags.h
    branches/multi-target-20100625-branch/gcc/function.c
    branches/multi-target-20100625-branch/gcc/function.h
    branches/multi-target-20100625-branch/gcc/fwprop.c
    branches/multi-target-20100625-branch/gcc/gcse.c
    branches/multi-target-20100625-branch/gcc/genattr.c
    branches/multi-target-20100625-branch/gcc/genattrtab.c
    branches/multi-target-20100625-branch/gcc/genautomata.c
    branches/multi-target-20100625-branch/gcc/genemit.c
    branches/multi-target-20100625-branch/gcc/genextract.c
    branches/multi-target-20100625-branch/gcc/genflags.c
    branches/multi-target-20100625-branch/gcc/gengenrtl.c
    branches/multi-target-20100625-branch/gcc/gengtype-lex.l
    branches/multi-target-20100625-branch/gcc/gengtype.c
    branches/multi-target-20100625-branch/gcc/gengtype.h
    branches/multi-target-20100625-branch/gcc/genmodes.c
    branches/multi-target-20100625-branch/gcc/genopinit.c
    branches/multi-target-20100625-branch/gcc/genoutput.c
    branches/multi-target-20100625-branch/gcc/genpeep.c
    branches/multi-target-20100625-branch/gcc/genpreds.c
    branches/multi-target-20100625-branch/gcc/genrecog.c
    branches/multi-target-20100625-branch/gcc/ggc-common.c
    branches/multi-target-20100625-branch/gcc/ggc-internal.h
    branches/multi-target-20100625-branch/gcc/ggc.h
    branches/multi-target-20100625-branch/gcc/gimple.h
    branches/multi-target-20100625-branch/gcc/graph.c
    branches/multi-target-20100625-branch/gcc/haifa-sched.c
    branches/multi-target-20100625-branch/gcc/hard-reg-set.h
    branches/multi-target-20100625-branch/gcc/ifcvt.c
    branches/multi-target-20100625-branch/gcc/implicit-zee.c
    branches/multi-target-20100625-branch/gcc/init-regs.c
    branches/multi-target-20100625-branch/gcc/insn-addr.h
    branches/multi-target-20100625-branch/gcc/integrate.c
    branches/multi-target-20100625-branch/gcc/ira-build.c
    branches/multi-target-20100625-branch/gcc/ira-color.c
    branches/multi-target-20100625-branch/gcc/ira-conflicts.c
    branches/multi-target-20100625-branch/gcc/ira-costs.c
    branches/multi-target-20100625-branch/gcc/ira-emit.c
    branches/multi-target-20100625-branch/gcc/ira-int.h
    branches/multi-target-20100625-branch/gcc/ira-lives.c
    branches/multi-target-20100625-branch/gcc/ira.c
    branches/multi-target-20100625-branch/gcc/ira.h
    branches/multi-target-20100625-branch/gcc/jump.c
    branches/multi-target-20100625-branch/gcc/loop-doloop.c
    branches/multi-target-20100625-branch/gcc/loop-init.c
    branches/multi-target-20100625-branch/gcc/loop-invariant.c
    branches/multi-target-20100625-branch/gcc/loop-iv.c
    branches/multi-target-20100625-branch/gcc/loop-unroll.c
    branches/multi-target-20100625-branch/gcc/loop-unswitch.c
    branches/multi-target-20100625-branch/gcc/lower-subreg.c
    branches/multi-target-20100625-branch/gcc/machmode.def
    branches/multi-target-20100625-branch/gcc/machmode.h
    branches/multi-target-20100625-branch/gcc/mkconfig.sh
    branches/multi-target-20100625-branch/gcc/mode-switching.c
    branches/multi-target-20100625-branch/gcc/modulo-sched.c
    branches/multi-target-20100625-branch/gcc/optabs.c
    branches/multi-target-20100625-branch/gcc/optabs.h
    branches/multi-target-20100625-branch/gcc/optc-gen.awk
    branches/multi-target-20100625-branch/gcc/opth-gen.awk
    branches/multi-target-20100625-branch/gcc/opts.c
    branches/multi-target-20100625-branch/gcc/output.h
    branches/multi-target-20100625-branch/gcc/passes.c
    branches/multi-target-20100625-branch/gcc/po/EXCLUDES
    branches/multi-target-20100625-branch/gcc/postreload-gcse.c
    branches/multi-target-20100625-branch/gcc/postreload.c
    branches/multi-target-20100625-branch/gcc/predict.c
    branches/multi-target-20100625-branch/gcc/predict.h
    branches/multi-target-20100625-branch/gcc/print-rtl.c
    branches/multi-target-20100625-branch/gcc/recog.c
    branches/multi-target-20100625-branch/gcc/recog.h
    branches/multi-target-20100625-branch/gcc/reg-stack.c
    branches/multi-target-20100625-branch/gcc/regcprop.c
    branches/multi-target-20100625-branch/gcc/reginfo.c
    branches/multi-target-20100625-branch/gcc/regmove.c
    branches/multi-target-20100625-branch/gcc/regrename.c
    branches/multi-target-20100625-branch/gcc/regs.h
    branches/multi-target-20100625-branch/gcc/regset.h
    branches/multi-target-20100625-branch/gcc/regstat.c
    branches/multi-target-20100625-branch/gcc/reload.c
    branches/multi-target-20100625-branch/gcc/reload.h
    branches/multi-target-20100625-branch/gcc/reload1.c
    branches/multi-target-20100625-branch/gcc/reorg.c
    branches/multi-target-20100625-branch/gcc/resource.c
    branches/multi-target-20100625-branch/gcc/resource.h
    branches/multi-target-20100625-branch/gcc/rtl.c
    branches/multi-target-20100625-branch/gcc/rtl.h
    branches/multi-target-20100625-branch/gcc/rtlanal.c
    branches/multi-target-20100625-branch/gcc/rtlhooks-def.h
    branches/multi-target-20100625-branch/gcc/rtlhooks.c
    branches/multi-target-20100625-branch/gcc/sched-deps.c
    branches/multi-target-20100625-branch/gcc/sched-ebb.c
    branches/multi-target-20100625-branch/gcc/sched-int.h
    branches/multi-target-20100625-branch/gcc/sched-rgn.c
    branches/multi-target-20100625-branch/gcc/sched-vis.c
    branches/multi-target-20100625-branch/gcc/sdbout.c
    branches/multi-target-20100625-branch/gcc/sel-sched-dump.c
    branches/multi-target-20100625-branch/gcc/sel-sched-dump.h
    branches/multi-target-20100625-branch/gcc/sel-sched-ir.c
    branches/multi-target-20100625-branch/gcc/sel-sched-ir.h
    branches/multi-target-20100625-branch/gcc/sel-sched.c
    branches/multi-target-20100625-branch/gcc/simplify-rtx.c
    branches/multi-target-20100625-branch/gcc/stack-ptr-mod.c
    branches/multi-target-20100625-branch/gcc/stmt.c
    branches/multi-target-20100625-branch/gcc/stor-layout.c
    branches/multi-target-20100625-branch/gcc/store-motion.c
    branches/multi-target-20100625-branch/gcc/target-def.h
    branches/multi-target-20100625-branch/gcc/target.h
    branches/multi-target-20100625-branch/gcc/targhooks.c
    branches/multi-target-20100625-branch/gcc/targhooks.h
    branches/multi-target-20100625-branch/gcc/testsuite/c-c++-common/Wint-to-pointer-cast-1.c   (props changed)
    branches/multi-target-20100625-branch/gcc/testsuite/c-c++-common/Wint-to-pointer-cast-2.c   (props changed)
    branches/multi-target-20100625-branch/gcc/testsuite/c-c++-common/Wint-to-pointer-cast-3.c   (props changed)
    branches/multi-target-20100625-branch/gcc/testsuite/c-c++-common/cpp/normalize-3.c   (props changed)
    branches/multi-target-20100625-branch/gcc/testsuite/c-c++-common/cpp/warning-directive-1.c   (props changed)
    branches/multi-target-20100625-branch/gcc/testsuite/c-c++-common/cpp/warning-directive-2.c   (props changed)
    branches/multi-target-20100625-branch/gcc/testsuite/c-c++-common/cpp/warning-directive-3.c   (props changed)
    branches/multi-target-20100625-branch/gcc/testsuite/c-c++-common/cpp/warning-directive-4.c   (props changed)
    branches/multi-target-20100625-branch/gcc/testsuite/g++.dg/warn/Wconversion-null-2.C   (props changed)
    branches/multi-target-20100625-branch/gcc/toplev.c
    branches/multi-target-20100625-branch/gcc/toplev.h
    branches/multi-target-20100625-branch/gcc/tree-affine.c
    branches/multi-target-20100625-branch/gcc/tree-chrec.h
    branches/multi-target-20100625-branch/gcc/tree-flow.h
    branches/multi-target-20100625-branch/gcc/tree-pass.h
    branches/multi-target-20100625-branch/gcc/tree-scalar-evolution.h
    branches/multi-target-20100625-branch/gcc/tree-ssa-address.c
    branches/multi-target-20100625-branch/gcc/tree-ssa-loop-ivopts.c
    branches/multi-target-20100625-branch/gcc/tree-ssa-loop-manip.c
    branches/multi-target-20100625-branch/gcc/tree-ssa-pre.c
    branches/multi-target-20100625-branch/gcc/tree-vect-stmts.c
    branches/multi-target-20100625-branch/gcc/tree-vectorizer.h
    branches/multi-target-20100625-branch/gcc/tree.h
    branches/multi-target-20100625-branch/gcc/var-tracking.c
    branches/multi-target-20100625-branch/gcc/varasm.c
    branches/multi-target-20100625-branch/gcc/web.c

Propchange: branches/multi-target-20100625-branch/
            ('svn:mergeinfo' added)

Propchange: branches/multi-target-20100625-branch/gcc/c-family/c-ada-spec.c
            ('svn:mergeinfo' removed)

Propchange: branches/multi-target-20100625-branch/gcc/c-family/c-ada-spec.h
            ('svn:mergeinfo' removed)

Propchange: branches/multi-target-20100625-branch/gcc/c-family/c-common.c
            ('svn:mergeinfo' removed)

Propchange: branches/multi-target-20100625-branch/gcc/c-family/c-common.def
            ('svn:mergeinfo' removed)

Propchange: branches/multi-target-20100625-branch/gcc/c-family/c-common.h
            ('svn:mergeinfo' removed)

Propchange: branches/multi-target-20100625-branch/gcc/c-family/c-cppbuiltin.c
            ('svn:mergeinfo' removed)

Propchange: branches/multi-target-20100625-branch/gcc/c-family/c-dump.c
            ('svn:mergeinfo' removed)

Propchange: branches/multi-target-20100625-branch/gcc/c-family/c-format.c
            ('svn:mergeinfo' removed)

Propchange: branches/multi-target-20100625-branch/gcc/c-family/c-format.h
            ('svn:mergeinfo' removed)

Propchange: branches/multi-target-20100625-branch/gcc/c-family/c-gimplify.c
            ('svn:mergeinfo' removed)

Propchange: branches/multi-target-20100625-branch/gcc/c-family/c-lex.c
            ('svn:mergeinfo' removed)

Propchange: branches/multi-target-20100625-branch/gcc/c-family/c-omp.c
            ('svn:mergeinfo' removed)

Propchange: branches/multi-target-20100625-branch/gcc/c-family/c-opts.c
            ('svn:mergeinfo' removed)

Propchange: branches/multi-target-20100625-branch/gcc/c-family/c-pch.c
            ('svn:mergeinfo' removed)

Propchange: branches/multi-target-20100625-branch/gcc/c-family/c-ppoutput.c
            ('svn:mergeinfo' removed)

Propchange: branches/multi-target-20100625-branch/gcc/c-family/c-pragma.c
            ('svn:mergeinfo' removed)

Propchange: branches/multi-target-20100625-branch/gcc/c-family/c-pragma.h
            ('svn:mergeinfo' removed)

Propchange: branches/multi-target-20100625-branch/gcc/c-family/c-pretty-print.c
            ('svn:mergeinfo' removed)

Propchange: branches/multi-target-20100625-branch/gcc/c-family/c-pretty-print.h
            ('svn:mergeinfo' removed)

Propchange: branches/multi-target-20100625-branch/gcc/c-family/c-semantics.c
            ('svn:mergeinfo' removed)

Propchange: branches/multi-target-20100625-branch/gcc/c-family/c.opt
            ('svn:mergeinfo' removed)

Propchange: branches/multi-target-20100625-branch/gcc/c-family/stub-objc.c
            ('svn:mergeinfo' removed)

Propchange: branches/multi-target-20100625-branch/gcc/testsuite/c-c++-common/Wint-to-pointer-cast-1.c
            ('svn:mergeinfo' removed)

Propchange: branches/multi-target-20100625-branch/gcc/testsuite/c-c++-common/Wint-to-pointer-cast-2.c
            ('svn:mergeinfo' removed)

Propchange: branches/multi-target-20100625-branch/gcc/testsuite/c-c++-common/Wint-to-pointer-cast-3.c
            ('svn:mergeinfo' removed)

Propchange: branches/multi-target-20100625-branch/gcc/testsuite/c-c++-common/cpp/normalize-3.c
            ('svn:mergeinfo' removed)

Propchange: branches/multi-target-20100625-branch/gcc/testsuite/c-c++-common/cpp/warning-directive-1.c
            ('svn:mergeinfo' removed)

Propchange: branches/multi-target-20100625-branch/gcc/testsuite/c-c++-common/cpp/warning-directive-2.c
            ('svn:mergeinfo' removed)

Propchange: branches/multi-target-20100625-branch/gcc/testsuite/c-c++-common/cpp/warning-directive-3.c
            ('svn:mergeinfo' removed)

Propchange: branches/multi-target-20100625-branch/gcc/testsuite/c-c++-common/cpp/warning-directive-4.c
            ('svn:mergeinfo' removed)

Propchange: branches/multi-target-20100625-branch/gcc/testsuite/g++.dg/warn/Wconversion-null-2.C
            ('svn:mergeinfo' removed)


Comment 8 Jorn Wolfgang Rennecke 2010-06-30 18:48:28 UTC
Subject: Bug 44566

Author: amylaar
Date: Wed Jun 30 18:47:43 2010
New Revision: 161633

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=161633
Log:
        PR other/44566
        * coretypes.h [!USED_FOR_TARGET] (reg_class_t): Define.
        * target.def (struct gcc_target): Replace enum reg_class with
        reg_class_t in hook argument / return types.
        * doc/tm.texi.in (TARGET_SECONDARY_RELOAD): Likewise.
        (TARGET_IRA_COVER_CLASSES, TARGET_MEMORY_MOVE_COST): Likewise.
        (TARGET_BRANCH_TARGET_REGISTER_CLASS): Likewise.
        * targhooks.h (default_branch_target_register_class): Likewise.
        (default_ira_cover_classes, default_secondary_reload): Likewise.
        (default_memory_move_cost, default_register_move_cost): Likewise.
        * targhooks.c (default_branch_target_register_class): Likewise.
        (default_ira_cover_classes, default_secondary_reload): Likewise.
        (default_memory_move_cost, default_register_move_cost): Likewise.
        * reload.c (push_secondary_reload, secondary_reload_class): Likewise.
        * bt-load.c (branch_target_load_optimize): Likewise.
        * ira.c (setup_cover_and_important_classes): Likewise.
        * ira-costs.c (copy_cost): Likewise.
        * reload1.c (emit_input_reload_insns): Likewise.
        * config/alpha/alpha.c (alpha_secondary_reload): Likewise.
        * config/frv/frv.c (frv_secondary_reload): Likewise.
        * config/s390/s390.c (s390_secondary_reload): Likewise.
        * config/i386/i386.c (i386_ira_cover_classes): Likewise.
        (ix86_secondary_reload, ix86_memory_move_cost): Likewise.
        (ix86_register_move_cost): Likewise.
        * config/sh/sh-protos.h (sh_secondary_reload): Likewise.
        * config/sh/sh.c (sh_target_reg_class, sh_secondary_reload): Likewise.
        * config/xtensa/xtensa.c (xtensa_secondary_reload): Likewise.
        * config/xtensa/xtensa-protos.h (xtensa_secondary_reload): Likewise.
        * config/rs6000/rs6000.c (rs6000_secondary_reload): Likewise.
        (rs6000_ira_cover_classes): Likewise.
        * config/picochip/picochip.c (picochip_secondary_reload): Likewise.
        * config/picochip/picochip-protos.h (picochip_secondary_reload):
        Likewise.
        * config/pa/pa.c (pa_secondary_reload): Likewise.
        * config/mips/mips.c (mips_ira_cover_classes): Likewise.
        * config/bfin/bfin.c (bfin_secondary_reload): Likewise.
        * config/ia64/ia64.c (ia64_register_move_cost): Likewise.
        * doc/tm.texi: Regenerate.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/bt-load.c
    trunk/gcc/config/alpha/alpha.c
    trunk/gcc/config/bfin/bfin.c
    trunk/gcc/config/frv/frv.c
    trunk/gcc/config/i386/i386.c
    trunk/gcc/config/ia64/ia64.c
    trunk/gcc/config/mips/mips.c
    trunk/gcc/config/pa/pa.c
    trunk/gcc/config/picochip/picochip-protos.h
    trunk/gcc/config/picochip/picochip.c
    trunk/gcc/config/rs6000/rs6000.c
    trunk/gcc/config/s390/s390.c
    trunk/gcc/config/sh/sh-protos.h
    trunk/gcc/config/sh/sh.c
    trunk/gcc/config/xtensa/xtensa-protos.h
    trunk/gcc/config/xtensa/xtensa.c
    trunk/gcc/coretypes.h
    trunk/gcc/doc/tm.texi
    trunk/gcc/ira-costs.c
    trunk/gcc/ira.c
    trunk/gcc/reload.c
    trunk/gcc/reload1.c
    trunk/gcc/target.def
    trunk/gcc/targhooks.c
    trunk/gcc/targhooks.h