- 10 Apr, 2014 1 commit
-
-
Christoph Mallon authored
-
- 28 Mar, 2014 2 commits
-
-
Matthias Braun authored
This also disables the memcombine optimisation if unaligned stores are not supported by the backend. We may add some tests in the future to reenable this in cases where we can prove that the combined store is aligned.
-
Matthias Braun authored
-
- 27 Mar, 2014 2 commits
-
-
Matthias Braun authored
-
Matthias Braun authored
-
- 25 Mar, 2014 4 commits
-
-
yb9976 authored
-
Matthias Braun authored
-
Matthias Braun authored
Rework load memory chain walking: - We keep the pointer as a base + offset representation all the time - Reuse predict_load code from localopt for more accurate replacement of Loads from constant entities - Support some more cases where load-after-load and load-after-store did not use the same mode but where we can easily get the value with some arithmetic.
-
yb9976 authored
This fixes opt/loadstore6.c.
-
- 21 Mar, 2014 1 commit
-
-
Matthias Braun authored
-
- 14 Mar, 2014 2 commits
-
-
Matthias Braun authored
Some analysis parts create new nodes destroying the CONSISTENT_OUT_EDGES property even though no real change has been performed.
-
Matthias Braun authored
-
- 13 Mar, 2014 1 commit
-
-
Matthias Braun authored
-
- 10 Mar, 2014 1 commit
-
-
yb9976 authored
This fixes opt/loadstore5.c.
-
- 07 Mar, 2014 1 commit
-
-
Matthias Braun authored
-
- 24 Feb, 2014 1 commit
-
-
Matthias Braun authored
- document this correctly - correctly test with tarval_is_constant() if you expect a constant value.
-
- 18 Feb, 2014 1 commit
-
-
Matthias Braun authored
This commit does: - Remove tarval_reachable+tarval_unreachable, dataflow analysis rather use top/bottom instead of other special values. - Rename tarval_undefined to tarval_unknown as it corresponds to the Unknown node (=a value which we don't know) - Remove predefined tarval_top/tarval_bottom from tv.h and place the defines into combo.c - Change compute_XXX constant folding functions to return tarval_unknown instead of tarval_bad if folding failed - compute_Unknown in combo results in tarval_bottom == tarval_unknown this eliminates strange special cases in the Cond/Switch rules and the now unnecessary cprop_X list.
-
- 17 Feb, 2014 1 commit
-
-
Christoph Mallon authored
-
- 28 Jan, 2014 2 commits
-
-
Christoph Mallon authored
-
Christoph Mallon authored
-
- 27 Jan, 2014 2 commits
-
-
Christoph Mallon authored
This removes the strange entity/type duality and we get rid of union symconst_symbol.
-
Christoph Mallon authored
-
- 24 Jan, 2014 1 commit
-
-
yb9976 authored
-
- 16 Jan, 2014 2 commits
- 28 Nov, 2013 2 commits
- 31 Oct, 2013 1 commit
-
-
Matthias Braun authored
Most firm analyses behaved incorrectlye when: A called SymConst did not have a method entity, assumed the code reachable by get_entity_irg is the code called. These assumptions are wrong when doing crazy casts in C or when dealing with weak symbols. This is fixed by introducing some convenience functions: get_Call_callee(), get_entity_linktime_irg()
-
- 29 Oct, 2013 1 commit
-
-
Matthias Braun authored
We first have to create the new replacement store after the phi, so the following removal of the old nodes does not assume the ptr input value is unused and kills it.
-
- 28 Oct, 2013 2 commits
-
-
Matthias Braun authored
-
Matthias Braun authored
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.
-
- 04 Sep, 2013 2 commits
-
-
This covers two cases (assuming no aliasing operations in between the nodes): Firstly, a Store node whose destination lies completely within the CopyB's destination can be deleted. Secondly, if a previous CopyB (A) writes to the source of CopyB to be optimized (B), we can use A's source pointer for further optimizations. If A's source is constant, we can change B to read from A's source. Cases with offsets are not handled.
-
When following the Memory chain for a Store, a CopyB node may be skipped, if both its destination and source do not alias with the Store's destination.
-
- 20 Jul, 2013 4 commits
-
-
Andreas Fried authored
Like a Store, a non-volatile CopyB whose destination is never read can be removed.
-
Andreas Fried authored
-
Andreas Fried authored
If a Load reads from a location written to by a previous CopyB, we can use the equivalent memory location in the CopyB's source buffer for further optimizations (e.g. Load-after-Store). In addition, if said CopyB source buffer is constant (e.g. an initializer), we may directly replace the Load's pointer value with the equivalent memory location in the initializer.
-
Andreas Fried authored
Code using get_alias_relation is converted by calling get_type_for_mode at the appropriate locations. This is in preparation for optimizations involving CopyB, which needs this additional flexibility.
-
- 19 Jul, 2013 1 commit
-
-
Andreas Fried authored
This requires to actually compute volatility in a number of places. Therefore, this also adds some helper functions to do that.
-
- 04 Jul, 2013 1 commit
-
-
Matthias Braun authored
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)
-
- 03 Jul, 2013 1 commit
-
-
Matthias Braun authored
- Previously it was part of load-store optimisations, the rewrite now works as a localopt. - The new version works for address arithmetic and not for Sels anymore (while the old code only worked for Sels) - The new version can handle some forms of initializer spanning loads like loading a string like "bla" with an mode_Iu to get all 3 chars and the zero in one load.
-