1. 11 Jun, 2013 11 commits
  2. 10 Jun, 2013 1 commit
  3. 07 Jun, 2013 3 commits
  4. 06 Jun, 2013 11 commits
  5. 26 May, 2013 4 commits
  6. 18 May, 2013 2 commits
  7. 17 May, 2013 4 commits
    • yb9976's avatar
      Delete strange switch cases. · 169187fe
      yb9976 authored
      We should never see an Id node and Call nodes should never have mode_X.
      169187fe
    • yb9976's avatar
      Clean up dca code (using C99). · 8ca4adce
      yb9976 authored
      8ca4adce
    • 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
  8. 15 May, 2013 4 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
    • Andreas Fried's avatar
      Remove an unneeded Sync edge when inlining. · 25c3a1fb
      Andreas Fried authored
      When inlining a function, cparser produces a Sync after the parameters
      have been copied, which has an edge to the Call's memory input. If there is
      at least one struct argument, this edge is not needed, and will not be
      generated now.
      
      Also, if there is only one parameter, the Sync itself is not generated.
      25c3a1fb
    • 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
    • Matthias Braun's avatar
      remove odd is_irn_pinned_in_irg function · 3b01f130
      Matthias Braun authored
      3b01f130