Skip to content
  1. Aug 13, 2015
    • David Majnemer's avatar
      Add myself as the InstCombine owner. · f49de481
      David Majnemer authored
      llvm-svn: 244823
      f49de481
    • Richard Smith's avatar
      [modules] If loading a .pcm file would cause us to run out of source... · 78d81ecf
      Richard Smith authored
      [modules] If loading a .pcm file would cause us to run out of source locations, attempt to fail more gracefully. (No test; this requires >= 4GB of preprocessed input...)
      
      llvm-svn: 244822
      78d81ecf
    • Philip Reames's avatar
      [RewriteStatepointsForGC] Avoid using unrelocated pointers after safepoints · 971dc3a8
      Philip Reames authored
      To be clear: this is an *optimization* not a correctness change.
      
      CodeGenPrep likes to duplicate icmps feeding branch instructions to take advantage of x86's ability to fuze many comparison/branch patterns into a single micro-op and to reduce the need for materializing i1s into general registers. PlaceSafepoints likes to place safepoint polls right at the end of basic blocks (immediately before terminators) when inserting entry and backedge safepoints. These two heuristics interact in a somewhat unfortunate way where the branch terminating the original block will be controlled by a condition driven by unrelocated pointers. This forces the register allocator to keep both the relocated and unrelocated values of the pointers feeding the icmp alive over the safepoint poll.
      
      One simple fix would have been to just adjust PlaceSafepoints to move one back in the basic block, but you can reach similar cases as a result of LICM or other hoisting passes. As a result, doing a post insertion fixup seems to be more robust.
      
      I considered doing this in CodeGenPrep itself, but having to update the live sets of already rewritten safepoints gets complicated fast. In particular, you can't just use def/use information because by moving the icmp, we're extending the live range of it's inputs potentially.
      
      Instead, this patch teaches RewriteStatepointsForGC to make the required adjustments before making the relocations explicit in the IR. This change really highlights the fact that RSForGC is a CodeGenPrep-like pass which is performing target specific lowering. In the long run, we may even want to combine the two though this would require a lot more smarts to be integrated into RSForGC first. We currently rely on being able to run a set of cleanup passes post rewriting because the IR RSForGC generates is pretty damn ugly.
      
      Differential Revision: http://reviews.llvm.org/D11819
      
      llvm-svn: 244821
      971dc3a8
    • Naomi Musgrave's avatar
      Revert "Implement poisoning of only class members in dtor, as opposed to also... · 522168f7
      Naomi Musgrave authored
      Revert "Implement poisoning of only class members in dtor, as opposed to also poisoning fields inherited from base classes."
      
      This reverts commit 8dbbf3578a9a5d063232b59e558e5fe46e2cd42c.
      Rolled back due to buildbot failures on 'ninja check-clang'.
      
      llvm-svn: 244820
      522168f7
  2. Aug 12, 2015
Loading