-I$(top_srcdir)/ir/adt \
-I$(top_srcdir)/ir/ana \
-I$(top_srcdir)/ir/arch \
+ -I$(top_srcdir)/ir/be \
-I$(top_srcdir)/ir/common \
- -I$(top_srcdir)/ir/config \
-I$(top_srcdir)/ir/debug \
-I$(top_srcdir)/ir/ident \
-I$(top_srcdir)/ir/ir \
+ -I$(top_srcdir)/ir/libcore \
-I$(top_srcdir)/ir/lower \
-I$(top_srcdir)/ir/net \
-I$(top_srcdir)/ir/opt \
-I$(top_srcdir)/ir/stat \
-I$(top_srcdir)/ir/tr \
-I$(top_srcdir)/ir/tv
+
libfirm_la_SOURCES = \
adt/array.c \
- adt/arrayset.c \
adt/bipartite.c \
adt/cpset.c \
adt/eset.c \
adt/gaussjordan.c \
+ adt/gaussseidel.c \
adt/hashset.c \
adt/hungarian.c \
adt/iterator.c \
ana/callgraph.c \
ana/cdep.c \
ana/cgana.c \
- ana/compute_loop_info.c \
ana/dfs.c \
ana/execfreq.c \
ana/execution_frequency.c \
ana/irextbb2.c \
ana/irextbb.c \
ana/irlivechk.c \
- ana/irlivechk_old.c \
+ ana/irloop.c \
ana/irmemory.c \
ana/irouts.c \
ana/irscc.c \
be/becopyilp.c \
be/becopyopt.c \
be/becopystat.c \
+ be/bedbgout.c \
be/bedomfront.c \
be/beemitter.c \
+ be/beflags.c \
be/begnuas.c \
be/beifg.c \
be/beifg_clique.c \
be/bemain.c \
be/bemodule.c \
be/benode.c \
- be/benodesets.c \
+ be/bepeephole.c \
be/bepressurestat.c \
- be/beprofile.c \
be/bera.c \
be/beraextern.c \
be/besched.c \
be/beschedmris.c \
+ be/beschednormal.c \
be/beschedrand.c \
be/beschedregpress.c \
be/beschedrss.c \
be/beschedtrace.c \
be/beschedtrivial.c \
+ be/bespillbelady2.c \
+ be/bespillbelady3.c \
be/bespillbelady.c \
be/bespill.c \
be/bespilldaemel.c \
- be/bespillmorgan.c \
+ be/bespilllinearscan.c \
be/bespilloptions.c \
be/bespillremat.c \
be/bespillslots.c \
common/firmwalk.c \
common/irtools.c \
common/statistics.c \
+ common/timing.c \
debug/dbginfo.c \
debug/debugger.c \
debug/firm_ycomp.c \
debug/seqnumbers.c \
ident/ident.c \
ident/mangle.c \
+ ir/instrument.c \
ir/irarch.c \
ir/irargs.c \
ir/ircgcons.c \
- ir/ircgopt.c \
ir/ircons.c \
ir/irdump.c \
+ ir/irdump_grgen.c \
ir/irdumptxt.c \
ir/iredges.c \
ir/irflag.c \
ir/irgwalk_blk.c \
ir/irgwalk.c \
ir/irhooks.c \
+ ir/irlinkednodemap.c \
+ ir/irlinkednodeset.c \
ir/irmode.c \
ir/irnode.c \
ir/irnodemap.c \
ir/iropt.c \
ir/irphase.c \
ir/irprintf.c \
+ ir/irprofile.c \
ir/irprog.c \
+ ir/irssacons.c \
ir/irvrfy.c \
ir/pseudo_irg.c \
+ ir/valueset.c \
+ libcore/lc_appendable.c \
+ libcore/lc_config_lexer.c \
+ libcore/lc_config_parser.c \
+ libcore/lc_opts.c \
+ libcore/lc_opts_enum.c \
+ libcore/lc_printf.c \
+ libcore/lc_type.c \
lower/lower_calls.c \
+ lower/lower_copyb.c \
lower/lower_dw.c \
lower/lower_hl.c \
lower/lower_intrinsics.c \
lower/lower_mode_b.c \
+ lower/lower_switch.c \
net/firmnet.c \
+ obstack/obstack.c \
+ obstack/obstack_printf.c \
+ opt/boolopt.c \
opt/cfopt.c \
+ opt/code_placement.c \
+ opt/combo.c \
opt/condeval.c \
opt/convopt.c \
+ opt/critical_edges.c \
opt/data_flow_scalar_replace.c \
opt/escape_ana.c \
opt/funccall.c \
opt/gvn_pre.c \
opt/ifconv.c \
+ opt/ircgopt.c \
opt/ldst2.c \
opt/ldstopt.c \
- opt/loop_unrolling.c \
opt/opt_confirms.c \
opt/opt_frame.c \
+ opt/opt_inline.c \
opt/opt_osr.c \
opt/opt_polymorphy.c \
opt/proc_cloning.c \
opt/reassoc.c \
opt/return.c \
opt/scalar_replace.c \
- opt/strength_red.c \
opt/tailrec.c \
opt/tropt.c \
stat/const_stat.c \
stat/pattern_dmp.c \
stat/stat_dmp.c \
stat/statev.c \
+ stat/stat_timing.c \
tr/entity.c \
tr/tpop.c \
tr/tr_inheritance.c \
tr/trvrfy.c \
tr/type.c \
+ tr/type_finalization.c \
tr/typegmod.c \
tr/type_identify.c \
tr/typewalk.c \
tv/tv.c
EXTRA_DIST = \
+ ana/irdom_t.h \
ana/dfs_t.h \
ana/irbackedge_t.h \
- ana/irdom_t.h \
- ana/irextbb_t.h \
ana/irloop_t.h \
- be/beabi.h \
- be/beabi_t.h \
- be/bearch.h \
- be/bearch_t.h \
+ ana/irextbb_t.h \
+ be/belive_t.h \
+ be/beifg_impl.h \
+ be/bepeephole.h \
+ be/bessaconstr.h \
+ be/beifg_t.h \
be/beblocksched.h \
- be/bechordal_draw.h \
- be/bechordal.h \
- be/bechordal_t.h \
+ be/bessadestrsimple.h \
be/becopyilp_t.h \
- be/becopyopt.h \
- be/becopyopt_t.h \
- be/becopystat.h \
- be/be_dbgout.h \
- be/bedomfront.h \
+ be/beverify.h \
+ be/bemachine.h \
be/beemitter.h \
be/begnuas.h \
- be/beifg.h \
- be/beifg_impl.h \
- be/beifg_t.h \
- be/beilpsched.h \
- be/beinsn_t.h \
- be/beintlive_t.h \
- be/beirg.h \
- be/beirgmod.h \
- be/beirg_t.h \
+ be/becopyopt_t.h \
+ be/bemodule.h \
+ be/be_t.h \
+ be/bespillremat.h \
be/bejavacoal.h \
be/belistsched.h \
- be/belive.h \
- be/belive_t.h \
+ be/bessadestr.h \
+ be/bechordal_draw.h \
+ be/beabi.h \
+ be/beflags.h \
+ be/bechordal_t.h \
+ be/beifg.h \
+ be/bespillslots.h \
+ be/besched_t.h \
+ be/beschedmris.h \
+ be/besched.h \
be/beloopana.h \
- be/belower.h \
- be/bemachine.h \
- be/bemachnode.h \
- be/bemodule.h \
- be/bemodule_t.h \
- be/benodesets.h \
- be/benode_t.h \
+ be/beilpsched.h \
+ be/becopyopt.h \
be/bepressurestat.h \
- be/beprofile.h \
- be/bera.h \
- be/besched.h \
- be/beschedmris.h \
- be/beschedrss.h \
- be/besched_t.h \
- be/bespillbelady.h \
- be/bespill.h \
- be/bespillmorgan.h \
- be/bespilloptions.h \
- be/bespillremat.h \
- be/bespillslots.h \
- be/bessaconstr.h \
- be/bessadestr.h \
- be/bessadestrsimple.h \
- be/bestate.h \
- be/bestatevent.h \
be/bestat.h \
- be/be_t.h \
- be/betranshlp.h \
+ be/bemachnode.h \
+ be/beabi_t.h \
be/beuses.h \
+ be/bestate.h \
+ be/bespilloptions.h \
+ be/bearch_t.h \
+ be/bera.h \
+ be/beirg_t.h \
+ be/beirgmod.h \
+ be/beinsn_t.h \
+ be/betranshlp.h \
+ be/belive.h \
be/beutil.h \
- be/beverify.h \
- common/debug.h \
+ be/bestatevent.h \
+ be/bespill.h \
+ be/be_dbgout.h \
+ be/belower.h \
+ be/bedomfront.h \
+ be/beintlive_t.h \
+ be/becopystat.h \
+ be/benode_t.h \
+ be/bemodule_t.h \
+ be/bechordal.h \
+ be/bearch.h \
+ be/beschedrss.h \
+ be/beirg.h \
+ be/be_dbgout_t.h \
common/error.h \
- common/firm_common_t.h \
- common/firmwalk.h \
- common/irtools.h \
common/statistics.h \
+ common/irtools.h \
+ common/firmwalk.h \
+ common/debug.h \
+ common/firm_common_t.h \
debug/dbginfo_t.h \
debug/debugger.h \
- external/read.h \
- external/read_t.h \
ident/ident_t.h \
- ir/irargs_t.h \
- ir/irbitset.h \
+ ir/irnodeset.h \
+ ir/irop_t.h \
+ ir/irmode_t.h \
+ ir/irvrfy_t.h \
+ ir/iredges_t.h \
+ ir/irphase_t.h \
ir/ircons_t.h \
ir/irdump_t.h \
- ir/iredges_t.h \
+ ir/irdump_grgen.h \
+ ir/irprog_t.h \
+ ir/irprofile.h \
ir/irflag_t.def \
- ir/irflag_t.h \
- ir/irgopt_t.h \
- ir/irgraph_t.h \
- ir/irmode_t.h \
- ir/irnodemap.h \
- ir/irnodeset.h \
+ ir/irtypes.h \
ir/irnode_t.h \
- ir/irop_t.h \
+ ir/irargs_t.h \
+ ir/irnodemap.h \
+ ir/irgraph_t.h \
ir/iropt_t.h \
- ir/irphase_t.h \
ir/irprintf_t.h \
- ir/irprog_t.h \
- ir/irtypes.h \
- ir/irvrfy_t.h \
+ ir/irbitset.h \
+ ir/irflag_t.h \
+ ir/irphases_t.h \
+ ir/irphaselist.h \
+ ir/iredgeset.h \
+ ir/instrument.h \
+ ir/irlinkednodemap.h \
+ ir/irlinkednodeset.h \
+ ir/valueset.h \
+ libcore/lc_common_t.h \
+ libcore/lc_appendable.h \
+ libcore/lc_config.h \
+ libcore/lc_parser_t.h \
+ libcore/lc_printf_arg_types.def \
+ libcore/do_bisonflex.sh \
+ libcore/lc_config_parser.h \
+ libcore/lc_opts_t.h \
+ libcore/lc_defines.h \
+ libcore/lc_opts_enum.h \
+ libcore/lc_opts.h \
+ libcore/lc_printf.h \
net/firmnet.h \
net/firmnet_t.h \
+ opt/scalar_replace.h \
opt/opt_confirms.h \
opt/opt_polymorphy.h \
+ opt/tropt.h \
opt/reassoc_t.h \
- opt/scalar_replace.h \
- opt/strength_red_t.h \
- stat/counter.h \
- stat/dags.h \
+ opt/opt_inline_t.h \
+ opt/funccall_t.h \
+ stat/statev.h \
+ stat/stat_dmp.h \
stat/firmstat_t.h \
stat/pattern_dmp.h \
stat/pattern.h \
- stat/stat_dmp.h \
- stat/statev.h \
+ stat/dags.h \
+ stat/counter.h \
+ stat/stat_timing.h \
tr/entity_t.h \
- tr/tpop_t.h \
tr/type_t.h \
- tv/fltcalc.h \
+ tr/tpop_t.h \
tv/strcalc.h \
tv/tv_t.h \
+ tv/fltcalc.h \
be/scripts/generate_emitter_new.pl \
- be/scripts/generate_machine.pl \
- be/scripts/generate_regalloc_if.pl \
be/scripts/generate_emitter.pl \
- be/scripts/generate_new_opcodes.pl
+ be/scripts/generate_machine.pl \
+ be/scripts/generate_new_opcodes.pl \
+ be/scripts/generate_regalloc_if.pl
+
# ia32 backend
-libfirm_la_SOURCES += \
+ia32_sources = \
be/ia32/bearch_ia32.c \
- be/ia32/gen_ia32_emitter.c \
- be/ia32/gen_ia32_machine.c \
- be/ia32/gen_ia32_regalloc_if.c \
+ be/ia32/ia32_architecture.c \
+ be/ia32/ia32_address_mode.c \
be/ia32/ia32_emitter.c \
be/ia32/ia32_finish.c \
be/ia32/ia32_fpu.c \
be/ia32/ia32_util.c \
be/ia32/ia32_x87.c
+ia32_built_sources = \
+ be/ia32/gen_ia32_emitter.c \
+ be/ia32/gen_ia32_emitter.h \
+ be/ia32/gen_ia32_machine.c \
+ be/ia32/gen_ia32_machine.h \
+ be/ia32/gen_ia32_regalloc_if.c \
+ be/ia32/gen_ia32_regalloc_if.h \
+ be/ia32/gen_ia32_new_nodes.c.inl \
+ be/ia32/gen_ia32_new_nodes.h
+MAINTAINERCLEANFILES = $(ia32_built_sources)
+BUILT_SOURCES = $(ia32_built_sources)
+libfirm_la_SOURCES += $(ia32_sources) $(ia32_built_sources)
+
EXTRA_DIST += \
be/ia32/ia32_spec.pl \
+ be/ia32/ia32_simd_spec.pl \
be/ia32/bearch_ia32_t.h \
+ be/ia32/ia32_architecture.h \
+ be/ia32/ia32_address_mode.h \
be/ia32/ia32_dbg_stat.h \
be/ia32/ia32_emitter.h \
be/ia32/ia32_finish.h \
$(PERL) $(srcdir)/be/scripts/generate_machine.pl $(srcdir)/be/ia32/ia32_spec.pl $(srcdir)/be/ia32
$(srcdir)/be/ia32/gen_ia32_regalloc_if.c $(srcdir)/be/ia32/gen_ia32_regalloc_if.h: \
- be/ia32/ia32_spec.pl be/scripts/generate_machine.pl
+ be/ia32/ia32_spec.pl be/scripts/generate_regalloc_if.pl
$(PERL) $(srcdir)/be/scripts/generate_regalloc_if.pl $(srcdir)/be/ia32/ia32_spec.pl $(srcdir)/be/ia32
# arm backend
-libfirm_la_SOURCES += \
+arm_sources = \
be/arm/bearch_arm.c \
- be/arm/gen_arm_emitter.c \
- be/arm/gen_arm_machine.c \
- be/arm/gen_arm_regalloc_if.c \
be/arm/arm_emitter.c \
be/arm/arm_map_regs.c \
be/arm/arm_new_nodes.c \
+ be/arm/arm_optimize.c \
be/arm/arm_transform.c
+arm_built_sources = \
+ be/arm/gen_arm_emitter.c \
+ be/arm/gen_arm_emitter.h \
+ be/arm/gen_arm_machine.c \
+ be/arm/gen_arm_machine.h \
+ be/arm/gen_arm_regalloc_if.c \
+ be/arm/gen_arm_regalloc_if.h \
+ be/arm/gen_arm_new_nodes.c.inl \
+ be/arm/gen_arm_new_nodes.h
+MAINTAINERCLEANFILES += $(arm_built_sources)
+BUILT_SOURCES += $(arm_built_sources)
+libfirm_la_SOURCES += $(arm_sources) $(arm_built_sources)
EXTRA_DIST += \
be/arm/arm_map_regs.h \
be/arm/arm_new_nodes.h \
be/arm/arm_nodes_attr.h \
+ be/arm/arm_optimize.h \
be/arm/arm_transform.h \
be/arm/bearch_arm.h \
- be/arm/bearch_arm_t.h \
- be/arm/gen_arm_emitter.h \
- be/arm/gen_arm_machine.h \
- be/arm/gen_arm_new_nodes.h \
- be/arm/gen_arm_regalloc_if.h \
- be/arm/gen_arm_regalloc_if_t.h
+ be/arm/bearch_arm_t.h
$(srcdir)/be/arm/gen_arm_new_nodes.c.inl $(srcdir)/be/arm/gen_arm_new_nodes.h: \
be/arm/arm_spec.pl be/scripts/generate_new_opcodes.pl
# mips backend
-libfirm_la_SOURCES += \
+mips_sources = \
be/mips/bearch_mips.c \
- be/mips/gen_mips_emitter.c \
- be/mips/gen_mips_machine.c \
- be/mips/gen_mips_regalloc_if.c \
be/mips/mips_emitter.c \
be/mips/mips_map_regs.c \
be/mips/mips_new_nodes.c \
be/mips/mips_scheduler.c \
be/mips/mips_transform.c
+mips_built_sources = \
+ be/mips/gen_mips_emitter.c \
+ be/mips/gen_mips_emitter.h \
+ be/mips/gen_mips_machine.c \
+ be/mips/gen_mips_machine.h \
+ be/mips/gen_mips_regalloc_if.c \
+ be/mips/gen_mips_regalloc_if.h \
+ be/mips/gen_mips_new_nodes.c.inl \
+ be/mips/gen_mips_new_nodes.h
+MAINTAINERCLEANFILES += $(mips_built_sources)
+BUILT_SOURCES += $(mips_built_sources)
+libfirm_la_SOURCES += $(mips_sources) $(mips_built_sources)
EXTRA_DIST += \
be/mips/mips_spec.pl \
# ppc32 backend
-libfirm_la_SOURCES += \
+ppc32_sources = \
be/ppc32/bearch_ppc32.c \
- be/ppc32/gen_ppc32_emitter.c \
- be/ppc32/gen_ppc32_machine.c \
- be/ppc32/gen_ppc32_regalloc_if.c \
be/ppc32/ppc32_emitter.c \
be/ppc32/ppc32_map_regs.c \
be/ppc32/ppc32_new_nodes.c \
be/ppc32/ppc32_transform.c \
be/ppc32/ppc32_transform_conv.c
+ppc32_built_sources = \
+ be/ppc32/gen_ppc32_emitter.c \
+ be/ppc32/gen_ppc32_emitter.h \
+ be/ppc32/gen_ppc32_machine.c \
+ be/ppc32/gen_ppc32_machine.h \
+ be/ppc32/gen_ppc32_regalloc_if.c \
+ be/ppc32/gen_ppc32_regalloc_if.h \
+ be/ppc32/gen_ppc32_new_nodes.c.inl \
+ be/ppc32/gen_ppc32_new_nodes.h
+MAINTAINERCLEANFILES += $(ppc32_built_sources)
+BUILT_SOURCES += $(ppc32_built_sources)
+libfirm_la_SOURCES += $(ppc32_sources) $(ppc32_built_sources)
EXTRA_DIST += \
be/ppc32/ppc32_spec.pl \
$(srcdir)/be/ppc32/gen_ppc32_regalloc_if.c $(srcdir)/be/ppc32/gen_ppc32_regalloc_if.h: \
be/ppc32/ppc32_spec.pl be/scripts/generate_machine.pl
$(PERL) $(srcdir)/be/scripts/generate_regalloc_if.pl $(srcdir)/be/ppc32/ppc32_spec.pl $(srcdir)/be/ppc32
+
+# TEMPLATE backend
+
+TEMPLATE_sources = \
+ be/TEMPLATE/bearch_TEMPLATE.c \
+ be/TEMPLATE/TEMPLATE_emitter.c \
+ be/TEMPLATE/TEMPLATE_map_regs.c \
+ be/TEMPLATE/TEMPLATE_new_nodes.c \
+ be/TEMPLATE/TEMPLATE_transform.c
+TEMPLATE_built_sources = \
+ be/TEMPLATE/gen_TEMPLATE_emitter.c \
+ be/TEMPLATE/gen_TEMPLATE_emitter.h \
+ be/TEMPLATE/gen_TEMPLATE_machine.c \
+ be/TEMPLATE/gen_TEMPLATE_machine.h \
+ be/TEMPLATE/gen_TEMPLATE_regalloc_if.c \
+ be/TEMPLATE/gen_TEMPLATE_regalloc_if.h \
+ be/TEMPLATE/gen_TEMPLATE_new_nodes.c.inl \
+ be/TEMPLATE/gen_TEMPLATE_new_nodes.h
+MAINTAINERCLEANFILES += $(TEMPLATE_built_sources)
+BUILT_SOURCES += $(TEMPLATE_built_sources)
+libfirm_la_SOURCES += $(TEMPLATE_sources) $(TEMPLATE_built_sources)
+
+EXTRA_DIST += \
+ be/TEMPLATE/TEMPLATE_spec.pl \
+ be/TEMPLATE/bearch_TEMPLATE.h \
+ be/TEMPLATE/bearch_TEMPLATE_t.h \
+ be/TEMPLATE/TEMPLATE_emitter.h \
+ be/TEMPLATE/TEMPLATE_map_regs.h \
+ be/TEMPLATE/TEMPLATE_new_nodes.h \
+ be/TEMPLATE/TEMPLATE_nodes_attr.h \
+ be/TEMPLATE/TEMPLATE_transform.h
+
+$(srcdir)/be/TEMPLATE/gen_TEMPLATE_new_nodes.c.inl $(srcdir)/be/TEMPLATE/gen_TEMPLATE_new_nodes.h: \
+ be/TEMPLATE/TEMPLATE_spec.pl be/scripts/generate_new_opcodes.pl
+ $(PERL) $(srcdir)/be/scripts/generate_new_opcodes.pl $(srcdir)/be/TEMPLATE/TEMPLATE_spec.pl $(srcdir)/be/TEMPLATE
+
+$(srcdir)/be/TEMPLATE/gen_TEMPLATE_emitter.c $(srcdir)/be/TEMPLATE/gen_TEMPLATE_emitter.h: \
+ be/TEMPLATE/TEMPLATE_spec.pl be/scripts/generate_emitter.pl
+ $(PERL) $(srcdir)/be/scripts/generate_emitter.pl $(srcdir)/be/TEMPLATE/TEMPLATE_spec.pl $(srcdir)/be/TEMPLATE
+
+$(srcdir)/be/TEMPLATE/gen_TEMPLATE_machine.c $(srcdir)/be/TEMPLATE/gen_TEMPLATE_machine.h: \
+ be/TEMPLATE/TEMPLATE_spec.pl be/scripts/generate_machine.pl
+ $(PERL) $(srcdir)/be/scripts/generate_machine.pl $(srcdir)/be/TEMPLATE/TEMPLATE_spec.pl $(srcdir)/be/TEMPLATE
+
+$(srcdir)/be/TEMPLATE/gen_TEMPLATE_regalloc_if.c $(srcdir)/be/TEMPLATE/gen_TEMPLATE_regalloc_if.h: \
+ be/TEMPLATE/TEMPLATE_spec.pl be/scripts/generate_machine.pl
+ $(PERL) $(srcdir)/be/scripts/generate_regalloc_if.pl $(srcdir)/be/TEMPLATE/TEMPLATE_spec.pl $(srcdir)/be/TEMPLATE