summaryrefslogtreecommitdiffhomepage
path: root/ir/be/bespillslots.c
Commit message (Collapse)AuthorAge
* amd64, be, ia32, sparc: Record that there is a twice returning call (setjmp) ↵Christoph Mallon2018-04-03
| | | | | | centrally in the birg. This way not each backend has to keep a separate flag and also does not need to manually call be_forbid_coalescing().
* Reorganize include directivesMatthias Braun2017-02-17
|
* Fix indentationSebastian Buchwald2016-11-02
|
* bespillslots: Change spillslot collection API to take size+alignMatthias Braun2016-04-25
| | | | | | | | | | | | Taking explicit size+po2align makes things easier compared to the previously used ir_type: ir_type* is a middleend concept not everything in the backend is represented as a type/mode anymore (x86_insn_size_t). Furthermore we only respected size+alignment of that type anyway, additional semantics would be unexpectedly ignored. It also simplifies the code in some places. This should also naturally fix a problem in 188.amp where we wrongly passed the type for mode_Ls instead of the type for mode_D before.
* be: Rewrite stack frame handlingMatthias Braun2016-04-04
| | | | | | | | | | | | | | | | | | | | This is a bigger rewrite of stack frame handling in the backend: - Do the stack frame type layout late, after all the spill slots have been created. This way we can avoid (and remove) the brittle frame_alloc_area(). - Standardize the meaning of stack entity offsets. After stack frame type layout they are relative to the stack pointer position at the beginning of the function. It is all in one type now, no splitting into "arg", "between" and "stack_frame" type anymore. - Generalize the stack pointer simulation code to work with a single callback. Represent stack state as current offset and align_padding number. Now that callbacks can access and modify them both we do not need custom code in the sparc backend anymore. - Remove alignment specification on IncSP, only keep a ignore_align flag used for the last IncSP that has to remove all existing sp adjustments and may end up on a misaligned SP on ia32/amd64. - Align stack by default on ia32+amd64 backends.
* Rename get_type_{size|alignment}_bytes() to get_type{size|alignment}()Matthias Braun2016-02-14
|
* bespillslots: Some cleanupMatthias Braun2016-01-24
|
* Fix typo.Sebastian Buchwald2016-01-08
|
* 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
|
* remove arch_get_frame_entity()Matthias Braun2014-11-25
| | | | Add callbacks on functions that really need them instead.
* normalize util.h includesMatthias Braun2014-09-30
|
* merge belive_t.h and belive.hMatthias Braun2014-08-21
|
* bespillslots: move memory value interference check to beliveMatthias Braun2014-07-18
|
* bespillslots: small cleanups in my_values_interfere, support Sync cascadesMatthias Braun2014-07-18
|
* 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.
* all: Add and use QSORT() and QSORT_ARR().Christoph Mallon2014-04-10
|
* Fix typo.Manuel Mohr2014-04-08
|
* Fix warning in optimize build.Manuel Mohr2014-04-08
|
* bespillslots: use type size, not mode sizeMatthias Braun2014-04-07
|
* rework some bespillslots aspectsMatthias Braun2014-04-07
| | | | | | - We now create a spill/reload/phi-web and take the largest necessary reload size to determine the size of the entities and the spills. - Some cleanups
* bespillslots: do not create affinity edges for self-loopsMatthias Braun2014-04-07
|
* bespillslots: cleanup, use C99Matthias Braun2014-03-28
|
* try to protect users from adding spills/stores to the frame entity coalescer ↵Tobias Rapp2014-03-19
| | | | (only loads may be added)
* Add and use foreach_irn_pred{,_r}().Christoph Mallon2014-02-17
|
* refactoring of returns_twice=>no_coalescing ruleMatthias Braun2013-06-27
| | | | | This mainly adds comments explaining the situation and avoids an extra graph walk.
* Do not coalesce spillslots if graph contains a call that returns twice.Manuel Mohr2013-06-27
| | | | | This works around a problem with modeling control flow for calls to setjmp and similar functions.
* 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 warnings in optimize build.Sebastian Buchwald2013-03-11
|
* remove xfree(), bitset_free() and use free() insteadMatthias Braun2013-01-29
|
* cleanup: Remove unnecessary #include.Christoph Mallon2012-12-21
|
* 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.
* bespillslots: Use be_get_end_of_block_insertion_point() instead of ↵Christoph Mallon2012-11-29
| | | | implementing something not entierly unlike it.
* belive: Clean up be_values_interfere() and its cousin my_values_interfere2().Christoph Mallon2012-11-28
|
* belive: Change all users of _value_strictly_dominates() to ↵Christoph Mallon2012-11-28
| | | | | | _value_strictly_dominates_intrablock(). All users check, that the blocks are equal, beforehand.
* rbitset: Let rbitset_alloca() return the new raw bitset.Christoph Mallon2012-11-25
|
* make statev API publicMatthias Braun2012-10-24
|
* simplify and cleanup execfreq APIMatthias Braun2012-07-30
|
* Let foreach_out_edge_kind() and foreach_out_edge_kind_safe() declare their ↵Christoph Mallon2012-07-13
| | | | iterator variables.
* Fix indentation.Christoph Mallon2012-07-13
|
* Let foreach_set() declare the iterator variable.Christoph Mallon2012-07-13
|
* Add the return type as parameter to the macros set_find() and set_insert().Christoph Mallon2012-07-13
|
* Add the * for the type in foreach_set() automatically.Christoph Mallon2012-07-13
|
* bespillslots: cleanup, make it deterministicMatthias Braun2012-06-21
|
* 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
|
* fix frame_alloc_area not setting a type sizeMatthias Braun2011-09-27
|
* Actually assert on mode M, as the comment says. We already know it's a Phi.Christoph Mallon2011-07-27
|