Skip to content
  1. Mar 01, 2014
  2. Feb 28, 2014
    • Reid Kleckner's avatar
      [CMake] Remove dead C backend option · 7c8743da
      Reid Kleckner authored
      Patch by Jevin Sweval!
      
      llvm-svn: 202556
      7c8743da
    • Reid Kleckner's avatar
      Reflow isProfitableToMakeFastCC · e6ff5c51
      Reid Kleckner authored
      llvm-svn: 202555
      e6ff5c51
    • Lang Hames's avatar
      Jumped the gun with r202551 and broke some bots that weren't yet C++11ified. · c083578a
      Lang Hames authored
      Reverting until the C++11 switch is complete.
      
      llvm-svn: 202554
      c083578a
    • Anton Yartsev's avatar
      [analyzer] Fix for PR18394. · 68a172ca
      Anton Yartsev authored
      Additional conditions that prevent useful nodes before call from being reclaimed.
      
      llvm-svn: 202553
      68a172ca
    • Sean Callanan's avatar
      Better error reporting when a variable can't be · 866e91c9
      Sean Callanan authored
      read during materialization.  First of all, report
      if we can't read the data for some reason.  Second,
      consult the ValueObject's error and report that if
      there's some problem.
      
      <rdar://problem/16074201>
      
      llvm-svn: 202552
      866e91c9
    • Lang Hames's avatar
      New PBQP solver, and updates to the PBQP graph. · 525a2123
      Lang Hames authored
      The previous PBQP solver was very robust but consumed a lot of memory,
      performed a lot of redundant computation, and contained some unnecessarily tight
      coupling that prevented experimentation with novel solution techniques. This new
      solver is an attempt to address these shortcomings.
      
      Important/interesting changes:
      
      1) The domain-independent PBQP solver class, HeuristicSolverImpl, is gone.
      It is replaced by a register allocation specific solver, PBQP::RegAlloc::Solver
      (see RegAllocSolver.h).
      
      The optimal reduction rules and the backpropagation algorithm have been extracted
      into stand-alone functions (see ReductionRules.h), which can be used to build
      domain specific PBQP solvers. This provides many more opportunities for
      domain-specific knowledge to inform the PBQP solvers' decisions. In theory this
      should allow us to generate better solutions. In practice, we can at least test
      out ideas now.
      
      As a side benefit, I believe the new solver is more readable than the old one.
      
      2) The solver type is now a template parameter of the PBQP graph.
      
      This allows the graph to notify the solver of any modifications made (e.g. by
      domain independent rules) without the overhead of a virtual call. It also allows
      the solver to supply policy information to the graph (see below).
      
      3) Significantly reduced memory overhead.
      
      Memory management policy is now an explicit property of the PBQP graph (via
      the CostAllocator typedef on the graph's solver template argument). Because PBQP
      graphs for register allocation tend to contain many redundant instances of
      single values (E.g. the value representing an interference constraint between
      GPRs), the new RASolver class uses a uniquing scheme. This massively reduces
      memory consumption for large register allocation problems. For example, looking
      at the largest interference graph in each of the SPEC2006 benchmarks (the
      largest graph will always set the memory consumption high-water mark for PBQP),
      the average memory reduction for the PBQP costs was 400x. That's times, not
      percent. The highest was 1400x. Yikes. So - this is fixed.
      
      "PBQP: No longer feasting upon every last byte of your RAM".
      
      Minor details:
      
      - Fully C++11'd. Never copy-construct another vector/matrix!
      
      - Cute tricks with cost metadata: Metadata that is derived solely from cost
      matrices/vectors is attached directly to the cost instances themselves. That way
      if you unique the costs you never have to recompute the metadata. 400x less
      memory means 400x less cost metadata (re)computation.
      
      Special thanks to Arnaud de Grandmaison, who has been the source of much
      encouragement, and of many very useful test cases.
      
      This new solver forms the basis for future work, of which there's plenty to do.
      I will be adding TODO notes shortly.
      
      - Lang.
      
      llvm-svn: 202551
      525a2123
    • Rui Ueyama's avatar
      [PECOFF] Sort SEH table entries according to its value. · 5522e81f
      Rui Ueyama authored
      It looks like the contents of the table need to be sorted according to its
      value, so that the runtime can find the entry by binary search. I'm not 100%
      sure if we really have to do that, but at least I can say it's safe to do
      because the contents of .sxdata is just a list of exception handlers' RVAs.
      
      llvm-svn: 202550
      5522e81f
    • Ed Maste's avatar
      Simplify POSIXThread register context handling · 111387c4
      Ed Maste authored
      This seems a little more straightforward and is equivalent to r201457
      for ELF core files.  A case for FreeBSD i386 is also added (it was
      incorrectly using the 64-bit register context and corrupting mememory).
      
      Better (user-facing) error handling is still needed.
      
      Review: http://llvm-reviews.chandlerc.com/D2765
      llvm-svn: 202549
      111387c4
Loading