Skip to content
  1. Mar 15, 2012
  2. Mar 14, 2012
    • Chandler Carruth's avatar
      Change where we enable the heuristic that delays inlining into functions · 30b8416d
      Chandler Carruth authored
      which are small enough to themselves be inlined. Delaying in this manner
      can be harmful if the function is inelligible for inlining in some (or
      many) contexts as it pessimizes the code of the function itself in the
      event that inlining does not eventually happen.
      
      Previously the check was written to only do this delaying of inlining
      for static functions in the hope that they could be entirely deleted and
      in the knowledge that all callers of static functions will have the
      opportunity to inline if it is in fact profitable. However, with C++ we
      get two other important sources of functions where the definition is
      always available for inlining: inline functions and templated functions.
      This patch generalizes the inliner to allow linkonce-ODR (the linkage
      such C++ routines receive) to also qualify for this delay-based
      inlining.
      
      Benchmarking across a range of large real-world applications shows
      roughly 2% size increase across the board, but an average speedup of
      about 0.5%. Some benhcmarks improved over 2%, and the 'clang' binary
      itself (when bootstrapped with this feature) shows a 1% -O0 performance
      improvement when run over all Sema, Lex, and Parse source code smashed
      into a single file. A clean re-build of Clang+LLVM with a bootstrapped
      Clang shows approximately 2% improvement, but that measurement is often
      noisy.
      
      llvm-svn: 152737
      30b8416d
    • Benjamin Kramer's avatar
      Silence operator precedence warnings. · 05e7a843
      Benjamin Kramer authored
      llvm-svn: 152711
      05e7a843
    • Chandler Carruth's avatar
      Refactor the inline cost bonus calculation for constants to use · a3089559
      Chandler Carruth authored
      a worklist rather than a recursive call.
      
      No functionality changed.
      
      llvm-svn: 152706
      a3089559
    • Bill Wendling's avatar
      Reapply r152486 with a fix for the nightly testers. · d7c0aae4
      Bill Wendling authored
      There were cases where a value could be used and it's both crossing an invoke
      and NOT crossing an invoke. This could happen in the landing pads. In that case,
      we will demote the value to the stack like we did before.
      <rdar://problem/10609139>
      
      llvm-svn: 152705
      d7c0aae4
    • Bill Wendling's avatar
      Insert the debugging instructions in one fell-swoop so that it doesn't call the · 618d5731
      Bill Wendling authored
      expensive "getFirstTerminator" call. This reduces the time of compilation in
      PR12258 from >10 minutes to < 10 seconds.
      
      llvm-svn: 152704
      618d5731
    • Andrew Trick's avatar
      misched: implemented a framework for top-down or bottom-up scheduling. · 8823decd
      Andrew Trick authored
      New flags: -misched-topdown, -misched-bottomup. They can be used with
      the default scheduler or with -misched=shuffle. Without either
      topdown/bottomup flag -misched=shuffle now alternates scheduling
      direction.
      
      LiveIntervals update is unimplemented with bottom-up scheduling, so
      only -misched-topdown currently works.
      
      Capped the ScheduleDAG hierarchy with a concrete ScheduleDAGMI class.
      ScheduleDAGMI is aware of the top and bottom of the unscheduled zone
      within the current region. Scheduling policy can be plugged into
      the ScheduleDAGMI driver by implementing MachineSchedStrategy.
      ConvergingScheduler is now the default scheduling algorithm.
      It exercises the new driver but still does no reordering.
      
      llvm-svn: 152700
      8823decd
    • Andrew Trick's avatar
      misched comments · 72515bef
      Andrew Trick authored
      llvm-svn: 152699
      72515bef
    • Eric Christopher's avatar
      Remove the DW_AT_MIPS_linkage name attribute when we don't need it · a9916d02
      Eric Christopher authored
      output (we're emitting a specification already and the information
      isn't changing).
      
      Saves 1% on the debug information for a build of llvm.
      
      Fixes rdar://11043421
      
      llvm-svn: 152697
      a9916d02
    • Benjamin Kramer's avatar
      Move APInt::operator[] inline. · 78b505b0
      Benjamin Kramer authored
      llvm-svn: 152692
      78b505b0
    • Benjamin Kramer's avatar
  3. Mar 13, 2012
Loading