Skip to content
  1. Apr 06, 2010
    • Chris Lattner's avatar
      fix a really nasty bug that Evan was tracking in SCCP. When resolving · adca6082
      Chris Lattner authored
      undefs in branches/switches, we have two cases: a branch on a literal
      undef or a branch on a symbolic value which is undef.  If we have a
      literal undef, the code was correct: forcing it to a constant is the
      right thing to do.
      
      If we have a branch on a symbolic value that is undef, we should force
      the symbolic value to a constant, which then makes the successor block
      live.  Forcing the condition of the branch to being a constant isn't 
      safe if later paths become live and the value becomes overdefined.  This
      is the case that 'forcedconstant' is designed to handle, so just use it.
      
      This fixes rdar://7765019 but there is no good testcase for this, the
      one I have is too insane to be useful in the future.
      
      llvm-svn: 100478
      adca6082
  2. Apr 05, 2010
  3. Apr 04, 2010
  4. Apr 03, 2010
  5. Apr 02, 2010
  6. Apr 01, 2010
  7. Mar 31, 2010
    • Dale Johannesen's avatar
      Fix a nasty dangling-pointer heisenbug that could · b67a6e66
      Dale Johannesen authored
      generate wrong code pretty much anywhere AFAICT.
      A case that hits the bug reproducibly is impossible,
      but the situation was like this:
      Addr = ...
      Store -> Addr
      Addr2 = GEP , 0, 0
      Store -> Addr2
      Handling the first store, the code changed replaced Addr
      with a sunkaddr and deleted Addr, but not its table
      entry.  Code in OptimizedBlock replaced Addr2 with a
      bitcast; if that happened to reuse the memory of Addr,
      the old table entry was erroneously found when handling
      the second store.
      
      llvm-svn: 100044
      b67a6e66
    • Bob Wilson's avatar
      6f7fd288
  8. Mar 30, 2010
  9. Mar 27, 2010
  10. Mar 26, 2010
  11. Mar 25, 2010
  12. Mar 24, 2010
  13. Mar 23, 2010
  14. Mar 22, 2010
  15. Mar 20, 2010
    • Dan Gohman's avatar
      Clear the SCEVExpander's insertion point after making deletions, · 1a2abe55
      Dan Gohman authored
      so that the SCEVExpander doesn't retain a dangling pointer as its
      insert position. The dangling pointer in this case wasn't ever used
      to insert new instructions, but it was causing trouble with
      SCEVExpander's code for automatically advancing its insert position
      past debug intrinsics.
      
      This fixes use-after-free errors that valgrind noticed in
      test/Transforms/IndVarSimplify/2007-06-06-DeleteDanglesPtr.ll and
      test/Transforms/IndVarSimplify/exit_value_tests.ll.
      
      llvm-svn: 99036
      1a2abe55
  16. Mar 19, 2010
Loading