Skip to content
  1. Mar 16, 2012
    • Benjamin Kramer's avatar
      CriticalAntiDepBreaker: BasicBlock::size is an expensive operation, reuse the cached value. · 8e5af375
      Benjamin Kramer authored
      No functionality change.
      
      llvm-svn: 152927
      8e5af375
    • Bill Wendling's avatar
      The alignment of the pointer part of the store instruction may have an · a2a26b54
      Bill Wendling authored
      alignment. If that's the case, then we want to make sure that we don't increase
      the alignment of the store instruction. Because if we increase it to be "more
      aligned" than the pointer, code-gen may use instructions which require a greater
      alignment than the pointer guarantees.
      <rdar://problem/11043589>
      
      llvm-svn: 152907
      a2a26b54
    • Chandler Carruth's avatar
      Rip out support for 'llvm.noinline'. This thing has a strange history... · b37fc13a
      Chandler Carruth authored
      It was added in 2007 as the first cut at supporting no-inline
      attributes, but we didn't have function attributes of any form at the
      time. However, it was added without any mention in the LangRef or other
      documentation.
      
      Later on, in 2008, Devang added function notes for 'inline=never' and
      then turned them into proper function attributes. From that point
      onward, as far as I can tell, the world moved on, and no one has touched
      'llvm.noinline' in any meaningful way since.
      
      It's time has now come. We have had better mechanisms for doing this for
      a long time, all the frontends I'm aware of use them, and this is just
      holding back progress. Given that it was never a documented feature of
      the IR, I've provided no auto-upgrade support. If people know of real,
      in-the-wild bitcode that relies on this, yell at me and I'll add it, but
      I *seriously* doubt anyone cares.
      
      llvm-svn: 152904
      b37fc13a
    • Chandler Carruth's avatar
      Start removing the use of an ad-hoc 'never inline' set and instead · d7a5f2ad
      Chandler Carruth authored
      directly query the function information which this set was representing.
      This simplifies the interface of the inline cost analysis, and makes the
      always-inline pass significantly more efficient.
      
      Previously, always-inline would first make a single set of every
      function in the module *except* those marked with the always-inline
      attribute. It would then query this set at every call site to see if the
      function was a member of the set, and if so, refuse to inline it. This
      is quite wasteful. Instead, simply check the function attribute directly
      when looking at the callsite.
      
      The normal inliner also had similar redundancy. It added every function
      in the module with the noinline attribute to its set to ignore, even
      though inside the cost analysis function we *already tested* the
      noinline attribute and produced the same result.
      
      The only tricky part of removing this is that we have to be able to
      correctly remove only the functions inlined by the always-inline pass
      when finalizing, which requires a bit of a hack. Still, much less of
      a hack than the set of all non-always-inline functions was. While I was
      touching this function, I switched a heavy-weight set to a vector with
      sort+unique. The algorithm already had a two-phase insert and removal
      pattern, we were just needlessly paying the uniquing cost on every
      insert.
      
      This probably speeds up some compiles by a small amount (-O0 compiles
      with lots of always-inline, so potentially heavy libc++ users), but I've
      not tried to measure it.
      
      I believe there is no functional change here, but yell if you spot one.
      None are intended.
      
      Finally, the direction this is going in is to greatly simplify the
      inline cost query interface so that we can replace its implementation
      with a much more clever one. Along the way, all the APIs get simplified,
      so it seems incrementally good.
      
      llvm-svn: 152903
      d7a5f2ad
    • Chandler Carruth's avatar
      Pull the implementation of the code metrics out of the inline cost · 3c256fbf
      Chandler Carruth authored
      analysis implementation. The header was already separated. Also cleanup
      all the comments in the header to follow a nice modern doxygen form.
      
      There is still plenty of cruft here, but some of that will fall out in
      subsequent refactorings and this was an easy step in the right
      direction. No functionality changed here.
      
      llvm-svn: 152898
      3c256fbf
    • Andrew Trick's avatar
      misched: add DAG edges from vreg defs to ExitSU. · e6913c72
      Andrew Trick authored
      These edges are not really necessary, but it is consistent with the
      way we currently create physreg edges. Scheduler heuristics that
      expect a DAG edge to the block terminator could benefit from this
      change. Although in the future I hope we have a better mechanism for
      modeling latency across scheduling regions.
      
      llvm-svn: 152895
      e6913c72
    • Andrew Trick's avatar
      LSR fix: Add isSimplifiedLoopNest to IVUsers analysis. · 070e540a
      Andrew Trick authored
      Only record IVUsers that are dominated by simplified loop
      headers. Otherwise SCEVExpander will crash while looking for a
      preheader.
      
      I previously tried to work around this in LSR itself, but that was
      insufficient. This way, LSR can continue to run if some uses are not
      in simple loops, as long as we don't attempt to analyze those users.
      
      Fixes <rdar://problem/11049788> Segmentation fault: 11 in LoopStrengthReduce
      
      llvm-svn: 152892
      070e540a
    • Chad Rosier's avatar
      Revert r152705, which reapplied r152486 as this appears to be causing failures · 1a9c17ef
      Chad Rosier authored
      on our internal nightly testers.  So, basically revert r152486 again.
      
      Abbreviated original commit message:
      Implement a more intelligent way of spilling uses across an invoke boundary.
      
      It looks as if Chander's inlining work, r152737, exposed an issue.
      
      llvm-svn: 152887
      1a9c17ef
    • Eli Friedman's avatar
      In InstCombiner::visitOr, make sure we reverse the operand swap used for... · e06535b2
      Eli Friedman authored
      In InstCombiner::visitOr, make sure we reverse the operand swap used for checking for or-of-xor operations after those checks; a later check expects that any constant will be in Op1.  PR12234.
      
      llvm-svn: 152884
      e06535b2
    • Jim Grosbach's avatar
      ARM optional operand on MRC/MCR assembly instructions. · 7cb9a13b
      Jim Grosbach authored
      rdar://11058464
      
      llvm-svn: 152883
      7cb9a13b
    • Jim Grosbach's avatar
      ARM vmrs system registers mvfr0 and mvfr1 handling. · 24d90e2d
      Jim Grosbach authored
      rdar://11058464
      
      llvm-svn: 152881
      24d90e2d
    • Eric Christopher's avatar
      Do the right thing on NULL uint64 fields. · a4a0cf83
      Eric Christopher authored
      Patch by Clemens Hammacher!
      
      Fixes PR12243
      
      llvm-svn: 152880
      a4a0cf83
    • NAKAMURA Takumi's avatar
      Revert r152613 (and r152614), "Inline the d'tor and add an anchor instead."... · a7e57ace
      NAKAMURA Takumi authored
      Revert r152613 (and r152614), "Inline the d'tor and add an anchor instead." for workaround of g++-4.4's miscompilation.
      
      It caused MSP430DAGToDAGISel::SelectIndexedBinOp() to be miscompiled.
      When two ReplaceUses()'s are expanded as inline, vtable in base class is stored to latter (ISelUpdater)ISU.
      
      llvm-svn: 152877
      a7e57ace
    • Eric Christopher's avatar
      For types with a parent of the compile unit make sure and emit · 7734ca28
      Eric Christopher authored
      the DECL information.
      
      rdar://10855921
      
      llvm-svn: 152876
      7734ca28
    • Jim Grosbach's avatar
      Remove inadvertant commit. · 6d9766b3
      Jim Grosbach authored
      llvm-svn: 152870
      6d9766b3
  2. Mar 15, 2012
Loading