summaryrefslogtreecommitdiffhomepage
path: root/ir/be/bepeephole.c
Commit message (Collapse)AuthorAge
* amd64: peephole: remove consecutive zero extensionsJohannes Bucher2020-02-21
|
* be: Allow moving memory operations in be_can_move_up().Christoph Mallon2018-03-20
| | | | | It is fine to do so, as long as they are not executed in different situations than before. The only critical place now checks this by itself and even does so for memory operations with NoMem as operand.
* Unify indentation of function parametersSebastian Buchwald2017-03-31
|
* 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
|
* Fix typos in comments.Christoph Mallon2016-11-09
|
* be: Add and use be_peephole_replace().Christoph Mallon2015-10-02
| | | | It combines sched_add_before() and be_peephole_exchange().
* arm, be, ia32, sparc: Do not go on with peephole optimization of IncSP, when ↵Christoph Mallon2015-08-02
| | | | | | | | | be_peephole_IncSP_IncSP() succeeded. The current IncSP was removed in this case and we now would operate on its predecessor IncSP. This is wrong, e.g. when asking for currently free registers. This corrects backend/incsp_pop.c, which was broken on ia32. It was wrongly assumed that a certain register was free and could be used to turn an IncSP into a Pop.
* be: Add and use be_new_Proj().Christoph Mallon2015-07-28
| | | | | It is like new_r_Proj(), but the mode is determined automatically from the out requirement of the predecessor. This probably resolves some mode mismatches in untested code paths -- AMD64 backend and SPARC hard float, I'm looking at you!
* Remove unnecessary #include "bearch.h".Christoph Mallon2015-07-19
|
* Remove unnecessary #include "debug.h".Christoph Mallon2015-07-19
|
* be: Add and use macros to iterate only/all nodes except Phis in the schedule.Christoph Mallon2015-07-07
|
* remove arch_register_type_t in favor of a simple bitfieldMatthias Braun2015-06-19
|
* 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.
* bepeephole: Add be_peephole_to_tuple().Christoph Mallon2015-01-09
|
* belive: Assert that a live set is valid when making an iterator for it.Christoph Mallon2014-12-30
|
* remove arch_get_frame_entity()Matthias Braun2014-11-25
| | | | Add callbacks on functions that really need them instead.
* debug: Clean up panic messages.Christoph Mallon2014-11-13
| | | | | | * No \n at end; panic() adds one * No punctuation mark at end * Lowercase first letter
* bepeephole: check assigned entities in be_can_move_down()Matthias Braun2014-09-09
| | | | | This fixes a subtle bug where the delay slot filler would move a spill/reload across a MemPerm although they both share a spillslot.
* merge belive_t.h and belive.hMatthias Braun2014-08-21
|
* 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.
* cleanup, use C99Matthias Braun2014-05-30
|
* rename error.h to panic.hMatthias Braun2014-05-28
|
* Add and use foreach_irn_pred{,_r}().Christoph Mallon2014-02-17
|
* remove NEW_ARR_A and use ALLOCANMatthias Braun2013-10-28
| | | | | | All users of NEW_ARR_A used it to construct a simple array, yet noone cared about it actually being an array with a length field in front. For this simple use case you should use ALLOCAN.
* normalize spelling: optimisation => optimizationMatthias Braun2013-07-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.
* Do not move instructions upwards if there is an output dependency.Sebastian Buchwald2013-04-04
| | | | | | The code requires assigned registers but no kept Proj. This fixes backend/udiv.c on SPARC.
* remove xfree(), bitset_free() and use free() insteadMatthias Braun2013-01-29
|
* cleanup: Remove unnecessary #include.Christoph Mallon2012-12-21
|
* bepeephole: Inline be_peephole_new_node() into its only caller.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.
* remove commented out codeMatthias Braun2012-12-04
|
* 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.
* bearch: Introduce be_foreach_out().Christoph Mallon2012-11-27
|
* sparc: be more conservative when moving memops aroundMatthias Braun2012-08-31
|
* sparc: rework emitter/delayslot handlingMatthias Braun2012-08-02
| | | | | We can now pull instructions from other blocks up and use the annul bits if profitable.
* simplify + optimize be_lv_foreachMatthias Braun2012-07-16
|
* Let foreach_out_edge_kind() and foreach_out_edge_kind_safe() declare their ↵Christoph Mallon2012-07-13
| | | | iterator variables.
* remove write-only bitsetMatthias Braun2012-07-13
|
* 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
|
* bepeephole: reachability check in can_move_beforeMatthias Braun2011-11-09
| | | | | | before we only tested, if we produce an output that is used as as input of any schedule node in between. This missed the case where you have unscheduled utility nodes like Sync in between.
* be: factor out can_move_to function from sparc_emitterMatthias Braun2011-10-17
|
* bepeephole: use global register indicesMatthias Braun2011-10-17
| | | | This simplifies the code and should make it slightly faster
* bepeephole: make assert about dominance less strictMatthias Braun2011-10-17
|
* Also track extended live ranges.Sebastian Buchwald2011-10-17
| | | | | | | If the peephole replaced the current node by another node the corresponding value is live before the current node. This fixes x86code/flags.c.
* fix cparser warningsMatthias Braun2011-04-15
|
* Another rewrite of prolog/epilog handling: Delay their creation until after ↵Matthias Braun2011-04-08
| | | | register allocation