summaryrefslogtreecommitdiffhomepage
path: root/ir/be/beverify.c
Commit message (Collapse)AuthorAge
* Rework target initialization and queryMatthias Braun2017-02-20
| | | | | | | | | | | | | | | | | | | | | | | | | | - Moves machine triple handling code form cparser into libfirm - Create new APIs to set the target and query information about it - Move backend_params into the new target API - Backends initialize ir_target instead of backend_params now - Add new API to get information about the target platform: - Mangle a name for the target platform (and remove compilerlib mangling callback) - Can query size and alignment of basic C types for the platform - Move some constant target information into arch_isa_if_t (we move it to target_info_t later when we realize it needs to be dynamic) - Redo backend initialization. Examples: Simple case: Initialize for host: ir_init(); Complex case: cross-compile to sparc with PIC enabled: ir_init_library(); ir_target_set("sparc-leon-linux-gnu"); ir_target_option("pic"); ir_target_init();
* Reorganize include directivesMatthias Braun2017-02-17
|
* beverify: Remove spillslot verifierMatthias Braun2016-01-18
| | | | | The verifier has been broken and therefore unused for a while, remove it for now.
* Simplify liveness validation.Sebastian Buchwald2015-12-02
| | | | This also fixes a possible null pointer access.
* Always include irnode_t.h from inside libfirm (or firm_types.h)Matthias Braun2015-09-10
|
* Move ir_node struct from irtypes.h to irnode_t.h, remove irtypes.h, cleanupMatthias Braun2015-09-10
|
* 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.
* be: Add and use macros to iterate only/all nodes except Phis in the schedule.Christoph Mallon2015-07-07
|
* 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_type_t in favor of a simple bitfieldMatthias Braun2015-06-19
|
* be: Check that the register class of an input and its operand match.Christoph Mallon2015-02-13
|
* beverify: Use the proper type for schedule time steps.Christoph Mallon2015-01-25
|
* beverify: Do not crash, when a node incorrectly has no input requirements.Christoph Mallon2015-01-25
|
* be: Move the info about the register classes and registers struct the ↵Christoph Mallon2015-01-18
| | | | arch_env_t into struct arch_isa_if_t.
* belive: Replace the union for head and nodes of the liveness sets by a ↵Christoph Mallon2015-01-09
| | | | struct with a flexible array member.
* beverify: Remove the register-to-node map from struct be_verify_reg_alloc_env_t.Christoph Mallon2014-12-31
|
* beverify: Put the temporary information of be_verify_register_allocation() ↵Christoph Mallon2014-12-31
| | | | into a struct.
* beverify: Unbreak be_liveness_check().Christoph Mallon2014-12-30
|
* belive: Assert that a live set is valid when making an iterator for it.Christoph Mallon2014-12-30
|
* beverify: Add a helper function to print register verifier warnings.Christoph Mallon2014-12-30
|
* beverify: Remove stale comment.Christoph Mallon2014-12-30
| | | | Projs are not scheduled anymore for a long time.
* beverify: Simplify loop in schedule verifier.Christoph Mallon2014-12-30
|
* beverify: Do not remember the irg globally.Christoph Mallon2014-12-30
|
* remove arch_get_frame_entity()Matthias Braun2014-11-25
| | | | Add callbacks on functions that really need them instead.
* be: Remove frame input from MemPerm.Christoph Mallon2014-11-13
|
* be: Use arch_is_irn_not_scheduled().Christoph Mallon2014-11-13
|
* be: Remove the thin wrapper function arch_get_irn_reg_class().Christoph Mallon2014-11-11
|
* rename proj attribute from Proj to num and change type to unsignedMatthias Braun2014-09-17
|
* merge belive_t.h and belive.hMatthias Braun2014-08-21
|
* Unified verify warning prefix.Sebastian Buchwald2014-08-04
|
* remove beintlive_t headerMatthias Braun2014-07-18
| | | | | Move the values interfere function to belive.h, move the inline implementation into belive.c
* cleanup beintlive_tMatthias Braun2014-07-18
| | | | | | | | - Remove value_dominates_intrablock()/value_strictly_dominates_intrablock() and use sched_comes_before() instead - Use bool instead of int return types. - Assert that we don't check if a node interferes with itself as that is nearly always a bug in the code.
* be: delay stack pointer SSA reconstruction until shortly before emitMatthias Braun2014-05-30
|
* all: Use is_$OP(x) instead of get_irn_opcode(x) == iro_$OP.Christoph Mallon2014-04-08
|
* remove generic be_Spill/be_Reload nodeMatthias Braun2014-04-02
|
* Add and use foreach_irn_pred{,_r}().Christoph Mallon2014-02-17
|
* be: rename arch_irn_flags_XXX to arch_irn_flag_XXXMatthias Braun2013-08-08
| | | | | As they were just a single flag the name should reflect that. I did not change arch_irn_flags_none, as that is not about a single flag.
* replace assert(0 && "message") with panic("message")Matthias Braun2013-07-04
| | | | | | also removed some assert(0) used in verifiers to stop when compiling with assertions (you better use your debugger to stop and keep the code clean)
* 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.
* Fixed bug introduced in 7dd67de2496539d779c6e8981037b48d5a837269.Sebastian Buchwald2013-01-23
|
* cleanup: Remove unnecessary #include "irgraph.h".Christoph Mallon2013-01-05
|
* 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.
* remove commented out codeMatthias Braun2012-12-04
|
* cleanup: Remove pointless assert(is_${NODE}(x)) just before ↵Christoph Mallon2012-12-03
| | | | get_${NODE}_${FOO}(x), which do the same assert.
* be: Simplify places, which still assumed, that Projs are scheduled.Christoph Mallon2012-11-29
|
* bearch: Add and use be_foreach_value().Christoph Mallon2012-11-28
| | | | This also handles the latent problem, that nobody checks, whether the user of a tuple is actually a Proj and not the End node.
* verify sched_not_scheduled flagMatthias Braun2012-11-28
|
* beverify: Simply use the register, which we already have, instead of ↵Christoph Mallon2012-11-27
| | | | fetching it again via its global index.
* 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
* bearch: remove arch_register_type_joker.Christoph Mallon2012-11-25
| | | | arch_register_type_virtual is sufficient.