path: root/ir/be/bedump.c
Commit message (Collapse)AuthorAge
* 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.
* be: Add the typedef 'be_add_pressure_t' for additional register pressure.Christoph Mallon2019-03-19
* be: Factor out code to decide whether a basic block needs a label.Christoph Mallon2018-05-31
| | | | For this a new flag 'arch_irn_flag_fallthrough' is introduced to mark nodes which are capable of falling through to their successor.
* be: Dump additional register pressure.Christoph Mallon2018-04-28
* Reorganize include directivesMatthias Braun2017-02-17
* be: Improve flag dumping codeMatthias Braun2016-04-25
| | | | | | - Always dump the actual name and not some apreviation/interpretation. - Add the missing flags. - Use a switch so we get a warning when flags are missing from the list.
* be: Remove flag 'aligned' from register requirements.Christoph Mallon2016-03-21
| | | | | It is the default for width != 1 now. Work on this never was finished, so it probably does not work anyway.
* Fix typos: datastructure -> data structure.Sebastian Buchwald2015-12-21
* bearch: Introduce kills_value constraint and use it for ia32_fisttpMatthias Braun2015-08-21
| | | | | | The kills value constraint indicated that the value in a register is modified after it is read. A copy is inserted if the value is still required after a kills_value use.
* be: Dump register information at Projs, too.Christoph Mallon2015-07-28
* be: Give the none register requirement a register class.Christoph Mallon2015-07-27
| | | | | Now register requirements always have have a register class. This is more consistent and removes some null pointer checks.
* Remove the unused function be_dump_ifg().Christoph Mallon2015-07-19
* Remove the unused function be_liveness_dump().Christoph Mallon2015-07-19
* bearch: Use bool:1 instead of a bitset for remainin reg_req typesMatthias Braun2015-07-01
* bearch: rework must_be_different constraintMatthias Braun2015-07-01
| | | | | | - Rename other_different field to must_be_different - Remove arch_register_req_type_must_be_different, it's enough to see if the must_be_different field is not zero.
* bearch: rework should_be_same constraintMatthias Braun2015-07-01
| | | | | | - Rename other_same field to should_be_same. - Remove arch_register_req_type_other_same, it's enough to see if the should_be_same field is not zero.
* Remove produces_sp register constraintMatthias Braun2015-07-01
| | | | | | | | We can easily identify the outputs producing a stack pointer by looking if the stack pointer register is assigned. Unfortunately this also needed a new mechanism to tell the verifier that some registers are not in SSA form (all the time) which needs a few extra lines in each backend.
* remove arch_register_req_type_limited, look whether the limited pointer is ↵Matthias Braun2015-06-19
| | | | != NULL instead
* cleanup: Move the implementation of bitset_fprint() into .c, to not spill ↵Christoph Mallon2015-05-29
| | | | #include "irprintf.h" everywhere.
* be: Make the error checks in be_dump_reqs_and_registers() more fine-granular.Christoph Mallon2015-01-29
* belive: Replace the union for head and nodes of the liveness sets by a ↵Christoph Mallon2015-01-09
| | | | struct with a flexible array member.
* be: Remove arch_register_req_type_normal.Christoph Mallon2014-12-04
| | | | This flag is plain redundant.
* be: Cleanup in bedump.Christoph Mallon2014-12-04
* be: Factorise common dump formatters for booleans and registers.Christoph Mallon2014-11-27
| | | | This replaces several 1/0 and true/false by yes/no.
* move arch_dump functions to be_dumpMatthias Braun2014-10-18
* merge belive_t.h and belive.hMatthias Braun2014-08-21
* 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.
* beifg: Let be_ifg_foreach_node() declare its iterator internally.Christoph Mallon2012-12-15
* 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.
* beifg: Let be_ifg_foreach_node() declare the node variable.Christoph Mallon2012-12-07
* beifg: Let be_ifg_foreach_neighbour() declare the node variable.Christoph Mallon2012-12-07
* rework liveness dumperMatthias Braun2012-11-28
| | | | | - some code cleanup - avoids the case where 2 dumpers are registered
* slightly optimize liveness codeMatthias Braun2012-11-26
| | | | | | | - save ir_node* instead of irn_idx in the map (saves irn_idx_map lookups) - in liveness_transfer check register class on the inputs (which is cheaper) and only then check the operand
* Add a wrapper macro for ir_nodehashmap_get(), which has the return type as ↵Christoph Mallon2012-07-13
| | | | additional parameter.
* Let co_gs_foreach_neighb() declare the iterator variable.Christoph Mallon2012-07-13
* Let foreach_set() declare the iterator variable.Christoph Mallon2012-07-13
* avoid macros in irdump interfaceMatthias Braun2011-12-07
* belive: move dumper to bedump, checker to beverifyMatthias Braun2011-12-05
* introduce bedumpMatthias Braun2011-12-05
Moves code from ifg dot-file dumpers around and produces .vcg graphs now (ycomp layout is way better than xdot)