[Bug middle-end/44566] configuration with multiple targets / backends is not supported.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=44566 Sam James changed: What|Removed |Added CC||radek at podgorny dot cz --- Comment #11 from Sam James --- *** Bug 21319 has been marked as a duplicate of this bug. ***
[Bug middle-end/44566] configuration with multiple targets / backends is not supported.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=44566 Eric Gallager changed: What|Removed |Added CC||froydnj at gcc dot gnu.org, ||mark at codesourcery dot com, ||steven at gcc dot gnu.org --- Comment #10 from Eric Gallager --- (In reply to Jorn Wolfgang Rennecke from comment #7) > The patches have been tested & posted to gcc-patches: > http://gcc.gnu.org/ml/gcc-patches/2010-06/msg02492.html > http://gcc.gnu.org/ml/gcc-patches/2010-06/msg02452.html > http://gcc.gnu.org/ml/gcc-patches/2010-06/msg02495.html > http://gcc.gnu.org/ml/gcc-patches/2010-06/msg02618.html > http://gcc.gnu.org/ml/gcc-patches/2010-06/msg02645.html > http://gcc.gnu.org/ml/gcc-patches/2010-06/msg02649.html cc-ing some people from these threads
[Bug middle-end/44566] configuration with multiple targets / backends is not supported.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=44566 Eric Gallager changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2018-07-08 CC||egallager at gcc dot gnu.org See Also||https://gcc.gnu.org/bugzill ||a/show_bug.cgi?id=44431, ||https://gcc.gnu.org/bugzill ||a/show_bug.cgi?id=44362 Depends on||44512 Ever confirmed|0 |1 --- Comment #9 from Eric Gallager --- (In reply to Jorn Wolfgang Rennecke from comment #1) > (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). Sounds related enough for "See Also" at least. Anyways, confirmed. Referenced Bugs: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=44512 [Bug 44512] --enable-build-with-cxx bootstrap fails in revision 160669
[Bug middle-end/44566] configuration with multiple targets / backends is not supported.
--- Comment #8 from amylaar at gcc dot gnu dot org 2010-06-30 18:48 --- 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 -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44566
[Bug middle-end/44566] configuration with multiple targets / backends is not supported.
--- Comment #7 from amylaar at gcc dot gnu dot org 2010-06-26 10:22 --- The patches have been tested & posted to gcc-patches: http://gcc.gnu.org/ml/gcc-patches/2010-06/msg02492.html http://gcc.gnu.org/ml/gcc-patches/2010-06/msg02452.html http://gcc.gnu.org/ml/gcc-patches/2010-06/msg02495.html http://gcc.gnu.org/ml/gcc-patches/2010-06/msg02618.html http://gcc.gnu.org/ml/gcc-patches/2010-06/msg02645.html http://gcc.gnu.org/ml/gcc-patches/2010-06/msg02649.html -- amylaar at gcc dot gnu dot org changed: What|Removed |Added Keywords||patch http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44566
[Bug middle-end/44566] configuration with multiple targets / backends is not supported.
--- Comment #6 from amylaar at gcc dot gnu dot org 2010-06-25 21:33 --- 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): Lik
[Bug middle-end/44566] configuration with multiple targets / backends is not supported.
--- Comment #5 from amylaar at gcc dot gnu dot org 2010-06-25 19:13 --- 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 -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44566
[Bug middle-end/44566] configuration with multiple targets / backends is not supported.
--- Comment #4 from amylaar at gcc dot gnu dot org 2010-06-25 19:00 --- 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 -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44566
[Bug middle-end/44566] configuration with multiple targets / backends is not supported.
--- Comment #3 from amylaar at gcc dot gnu dot org 2010-06-25 18:44 --- 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 -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44566
[Bug middle-end/44566] configuration with multiple targets / backends is not supported.
--- Comment #2 from joseph at codesourcery dot com 2010-06-17 14:28 --- 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. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44566
[Bug middle-end/44566] configuration with multiple targets / backends is not supported.
--- Comment #1 from amylaar at gcc dot gnu dot org 2010-06-17 11:40 --- (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). -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44566