summaryrefslogtreecommitdiffhomepage
path: root/ir/be/bespilldaemel.c
Commit message (Collapse)AuthorAge
* Use MAX.Christoph Mallon2019-03-24
|
* be: Refine modelling of additional register pressure.Christoph Mallon2019-03-24
| | | | | | | | | | | | | | | | | | Now additional pressure is applied to the register pressure either before (positive value) or after (negative value) the instruction. So far the value was applied to both the register pressure before and after the instruction. This leads to overapproximation, e.g. for cltd (in: eax, out: edx). When the input lives through then the register pressure after the instruction is 2, but +1 additional pressure unnecessarily increases it to 3. Now the additional pressure is applied to either the register pressure before or after the instruction. For cltd applying it only before the instruction is optimal, because the output can never be paired with the input. Typical symptom was overspilling around cltd+idiv. This still can overapproximate the actual register demand when in/out pairing depends on whether an input lives through. E.g. in: eax+reg, out: edx. Then 3 registers are needed when the reg input lives through. (additional pressure before 1) But only 2 registers are needed when the reg input dies. (no additional pressure) This fixes lit/overspill_cltd.c.
* Unify indentation of function parametersSebastian Buchwald2017-03-31
|
* Reorganize include directivesMatthias Braun2017-02-17
|
* Respect additional pressure demands in spill algorithmsMatthias Braun2015-07-23
|
* be: Add and use macros to iterate only/all nodes except Phis in the schedule.Christoph Mallon2015-07-07
|
* break arch_isa_if_t furhter apart by moving spilling related callbacks into ↵Matthias Braun2015-06-19
| | | | an own struct
* normalize util.h includesMatthias Braun2014-09-30
|
* bearch: cleanup, improve struct packingMatthias Braun2014-09-09
|
* bespillutil: cleanup, use C99Matthias Braun2014-07-08
|
* rename error.h to panic.hMatthias Braun2014-05-28
|
* all: Add and use QSORT() and QSORT_ARR().Christoph Mallon2014-04-10
|
* Add and use foreach_irn_pred{,_r}().Christoph Mallon2014-02-17
|
* get rid of unnecessary be_spiller_t structMatthias Braun2013-11-12
|
* Avoid reload if the node is *kept* by a CopyKeep.Sebastian Buchwald2013-09-04
|
* do not include config.h anymoreMatthias Braun2013-05-04
| | | | | | It has been empty for nearly all systems. People who used to put stuff in config.h can still create a config.h on their own and inject -include (gcc) or /FI (msvc) into their CPPFLAGS.
* remove xfree(), bitset_free() and use free() insteadMatthias Braun2013-01-29
|
* bespill: Remove redundant tests for ignore-only register classes.Christoph Mallon2012-12-19
| | | | Such register classes are flagged manual_ra already.
* remove license stuff from filesMatthias Braun2012-12-12
| | | | | Just state the copyright and the project the files belong to. You can then find the COPYING file for the whole project.
* bearch: Make the register requirements an output parameter of ↵Christoph Mallon2012-11-28
| | | | be_foreach_definition().
* introduce be_foreach_use and use itMatthias Braun2012-11-28
|
* cleanup: Remove unnecessary #include "beirg.h".Christoph Mallon2012-11-25
|
* Let be_foreach_definition() declare the value variable.Christoph Mallon2012-11-13
|
* simplify by using C99Matthias Braun2012-08-21
|
* Let foreach_ir_nodeset() declare its iterator variables.Christoph Mallon2012-07-19
|
* Let sched_foreach_from() and sched_foreach_reverse_from() declare their ↵Christoph Mallon2012-07-13
| | | | iterator variables.
* Let foreach_out_edge_kind() and foreach_out_edge_kind_safe() declare their ↵Christoph Mallon2012-07-13
| | | | iterator variables.
* belive: cleanup livness assure/invalidate APIMatthias Braun2011-12-22
| | | | This also plugs liveness related memory leaks
* remove $Id$, it doesn't work with git anywayMatthias Braun2011-11-10
|
* big refactoring of arch_XXX functionsMatthias Braun2011-08-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | This tries to get the names in a consistent format. We basically have 2 views on register allocation/constraints now: 1) Register Requirements and Assigments are per-instruction. Each instruction has requirements on its inputs and outputs, register get assigned for outputs of an instruction (assignment is an attribute of an instruction, not of the Proj-nodes). The internal datastructures model this form! The functions here have the form: arch_get_irn_register_req_in(node, input_nr) arch_get_irn_register_in(node, input_nr) arch_get_irn_register_req_out(node, output_nr) arch_set_irn_register_out(node, output_nr, register) 2) Register Requirements and Assignments are on firm-values. This view allows to query/assign requirements and registers at the Proj nodes instead of the repsective predecessors. This is a convenience interface modeled on top of the other! The functions have the form: arch_get_irn_register_req(node) arch_get_irn_register(node) arch_set_irn_register(node, register)
* fix cparser warningsMatthias Braun2011-04-15
|
* fix warningMatthias Braun2011-01-08
| | | | [r28227]
* Fixed some 64bit warnings because of mixing size_t and other types.Michael Beck2011-01-07
| | | | [r28221]
* make firm compilable with a c++ compilerMatthias Braun2010-11-04
| | | | [r28127]
* backend: cleanup queries for ignore regsMatthias Braun2010-10-08
| | | | [r28071]
* adapt daemelspiller to wide register valuesMatthias Braun2010-08-09
| | | | [r27908]
* cleanup spill code; assert that no wide values are used yetMatthias Braun2010-08-09
| | | | [r27905]
* backend: created a (not so nice) macro to iterate over all values defined by ↵Matthias Braun2010-08-05
| | | | | | an instruction. This avoids lots of small-scale code duplication in the spillers and the prefallocator [r27874]
* change spiller and related interface to use ir_graph* instead of be_irg_t*Matthias Braun2010-07-02
| | | | [r27691]
* - change various be_get_birg_XXX functions to be_get_irg_XXX functions.Matthias Braun2010-07-02
| | | | [r27690]
* make firm (mostly) -Wmissing-prototypes cleanMatthias Braun2010-03-09
| | | | [r27277]
* Put a space after if/for/switch/while.Christoph Mallon2010-02-13
| | | | [r27153]
* rename benode_t.h to benode.h, remove some unused codeMatthias Braun2009-09-17
| | | | [r26535]
* Summary is not a doxygen tagSebastian Buchwald2009-08-24
| | | | [r26408]
* fix daemel spiller accessing flags of Proj nodesMatthias Braun2009-08-24
| | | | [r26405]
* - implement output constraint enforcement for new register allocatorMatthias Braun2009-08-11
| | | | | | - rename bespilloptions.* to bespill.* and bespill.* to bespillutil.* [r26327]
* reorganize backend headers (kill some _t variants in favor of a be_types.h)Matthias Braun2009-08-05
| | | | [r26317]
* Add ALLOCAN() and ALLOCANZ().Christoph Mallon2008-10-18
| | | | [r22985]
* - typos fixedMichael Beck2008-10-12
| | | | [r22781]
* remove #ifdef HAVE_CONFIG_HsMatthias Braun2008-10-11
| | | | [r22754]