1. 10 Mar, 2014 1 commit
  2. 07 Mar, 2014 1 commit
  3. 24 Feb, 2014 1 commit
  4. 18 Feb, 2014 1 commit
    • Matthias Braun's avatar
      cleanup special tarval and Unknown usage · af666143
      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.
      af666143
  5. 17 Feb, 2014 1 commit
  6. 28 Jan, 2014 2 commits
  7. 27 Jan, 2014 2 commits
  8. 24 Jan, 2014 1 commit
  9. 16 Jan, 2014 2 commits
  10. 28 Nov, 2013 2 commits
  11. 31 Oct, 2013 1 commit
    • Matthias Braun's avatar
      fix corner cases when determining called entities/irgs · c9f09085
      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()
      c9f09085
  12. 29 Oct, 2013 1 commit
  13. 28 Oct, 2013 2 commits
  14. 04 Sep, 2013 2 commits
    • Andreas Fried's avatar
      Add an optimization for CopyB nodes. · 9a42176a
      Andreas Fried authored and yb9976's avatar yb9976 committed
      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.
      9a42176a
    • Andreas Fried's avatar
      Enable Stores to see through non-aliasing CopyB nodes. · d75a2287
      Andreas Fried authored and yb9976's avatar yb9976 committed
      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.
      d75a2287
  15. 20 Jul, 2013 4 commits
  16. 19 Jul, 2013 1 commit
  17. 04 Jul, 2013 1 commit
  18. 03 Jul, 2013 2 commits
  19. 02 Jul, 2013 1 commit
  20. 17 May, 2013 2 commits
    • Andreas Fried's avatar
      Kill unneeded operands when killing Stores. · 58f73478
      Andreas Fried authored
      After killing a store (e.g. if it is dead), its Store value can be killed,
      if no other node uses it. We can use the code in reduce_adr_usage for that,
      which also works for non-pointers.
      
      This commit adds a new function kill_and_reduce_usage, which works for Load
      and Store nodes. It kills the node and all Loads on which only the killed
      node depends.
      58f73478
    • Andreas Fried's avatar
      Move dead store elimination to a separate irg walk. · ee99f31f
      Andreas Fried authored
      optimize_load can introduce dead stores, which are not removed, because
      they have already been visited (the irg is walked from Start to End).
      
      This commit adds a second irg walk for dead store elimination after the
      other optimizations have run, and removes dead store elimination from the
      first walk.
      ee99f31f
  21. 15 May, 2013 2 commits
    • Andreas Fried's avatar
      Fix read-after-write optimization. · 5e135c82
      Andreas Fried authored
      Previously, if the load and store mode were equal, the optimization
      aborted immediately. This is not necessary, we must only abort if the load
      and store modes' arithmetic are not equal.
      
      This causes a bug in type-based alias analysis to appear: When a CopyB is
      lowered to Loads and Stores, the modes of these are always Iu instead of
      the actual modes of the struct's members. The test-case "opt/fehler199.c"
      will fail as a result.
      
      Therefore, type-based alias analysis is switched off in cparser.
      5e135c82
    • Matthias Braun's avatar
      remove overly complicate pass management code · 1d13a49e
      Matthias Braun authored
      Nobody uses it currently, and it is a burden for everyone writing a new
      pass.
      1d13a49e
  22. 04 May, 2013 1 commit
    • Matthias Braun's avatar
      do not include config.h anymore · 0f73b43e
      Matthias Braun authored
      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.
      0f73b43e
  23. 13 Mar, 2013 2 commits
  24. 21 Dec, 2012 1 commit
  25. 12 Dec, 2012 2 commits
  26. 03 Dec, 2012 1 commit