Skip to content
  1. Mar 26, 2014
  2. Mar 25, 2014
    • Duncan P. N. Exon Smith's avatar
      blockfreq: Implement Pass::releaseMemory() · 3dbe1050
      Duncan P. N. Exon Smith authored
      Implement Pass::releaseMemory() in BlockFrequencyInfo and
      MachineBlockFrequencyInfo.  Just delete the private implementation when
      not in use.  Switch to a std::unique_ptr to make the logic more clear.
      
      <rdar://problem/14292693>
      
      llvm-svn: 204741
      3dbe1050
    • Duncan P. N. Exon Smith's avatar
      936aef92
    • Juergen Ributzka's avatar
      [DAG] Keep the opaque constant flag when performing unary constant folding operations. · e2e16844
      Juergen Ributzka authored
      Usually opaque constants shouldn't be folded, unless they are simple unary
      operations that don't create new constants. Although this shouldn't drop the
      opaque constant flag. This commit fixes this.
      
      Related to <rdar://problem/14774662>
      
      llvm-svn: 204737
      e2e16844
    • Matt Arsenault's avatar
      Fix creating illegal setcc cond codes. · b22426c5
      Matt Arsenault authored
      If GT/UGT or LT/ULT were set to expand, a comparison
      with a constant would replace it with the illegal
      cond code.
      
      There are several more places later in this function that
      will have the same basic problem.
      
      Theoretically R600 should hit this problem for a test,
      but for some reason it doesn't.
      
      llvm-svn: 204727
      b22426c5
    • David Majnemer's avatar
      WinCOFF: Add support for -fdata-sections · 273bff47
      David Majnemer authored
      This is a pretty straight forward translation for COFF, we just need to
      stick the data in a COMDAT section marked as
      IMAGE_COMDAT_SELECT_NODUPLICATES.
      
      N.B. We must be careful to avoid sticking entities with private linkage
      in COMDAT groups.  COFF is pretty hostile to the renaming of entities so
      we must be careful to disallow GlobalVariables with unstable names.
      
      llvm-svn: 204703
      273bff47
    • David Blaikie's avatar
      DebugInfo: Add GNU_addr_base and GNU_ranges_base only when there are addresses or ranges · 3ffe4dd6
      David Blaikie authored
      Based on code review feedback from Eric in r204672.
      
      llvm-svn: 204702
      3ffe4dd6
    • David Blaikie's avatar
      DebugInfo: Support debug_loc under fission · 9c550ac4
      David Blaikie authored
      Implement debug_loc.dwo, as well as llvm-dwarfdump support for dumping
      this section.
      
      Outlined in the DWARF5 spec and http://gcc.gnu.org/wiki/DebugFission the
      debug_loc.dwo section has more variation than the standard debug_loc,
      allowing 3 different forms of entry (plus the end of list entry). GCC
      seems to, and Clang certainly, only use one form, so I've just
      implemented dumping support for that for now.
      
      It wasn't immediately obvious that there was a good refactoring to share
      the implementation of dumping support between debug_loc and
      debug_loc.dwo, so they're separate for now - ideas welcome or I may come
      back to it at some point.
      
      As per a comment in the code, we could choose different forms that may
      reduce the number of debug_addr entries we emit, but that will require
      further study.
      
      llvm-svn: 204697
      9c550ac4
    • David Blaikie's avatar
      DebugInfo: Remove unnecessary zero-size check · 2d33d6a4
      David Blaikie authored
      This seems excessive - switching section isn't expensive (or if it is
      we're already being wasteful, since we emitted the debug_loc section
      symbol earlier anyway) and otherwise there's no work that happens in
      this function when the list is empty.
      
      llvm-svn: 204696
      2d33d6a4
    • Manman Ren's avatar
      Register Allocator: check other options before using a CSR for the first time. · 78cf02a0
      Manman Ren authored
      When register allocator's stage is RS_Spill, we choose spill over using the CSR
      for the first time, if the spill cost is lower than CSRCost. 
      When register allocator's stage is < RS_Split, we choose pre-splitting over
      using the CSR for the first time, if the cost of splitting is lower than
      CSRCost.
      
      CSRCost is set with command-line option "regalloc-csr-first-time-cost". The
      default value is 0 to generate the same codes as before this commit.
      
      With a value of 15 (1 << 14 is the entry frequency), I measured performance
      gain of 3% on 253.perlbmk and 1.7% on 197.parser, with instrumented PGO,
      on an arm device.
      
      rdar://16162005
      
      llvm-svn: 204690
      78cf02a0
    • Manman Ren's avatar
      Register Allocator: refactoring (no functionality change). · 9db66b3d
      Manman Ren authored
      Factor out two functions calculateRegionSplitCost and doRegionSplit
      from tryRegionSplit. These two functions will be used in coming patches.
      
      rdar://16162005
      
      llvm-svn: 204684
      9db66b3d
  3. Mar 24, 2014
  4. Mar 23, 2014
    • David Majnemer's avatar
      WinCOFF: Add support for -ffunction-sections · 9338984f
      David Majnemer authored
      This is a pretty straight forward translation for COFF, we just need to
      stick the function in a COMDAT section marked as
      IMAGE_COMDAT_SELECT_NODUPLICATES.
      
      llvm-svn: 204565
      9338984f
    • Nuno Lopes's avatar
      remove a bunch of unused private methods · 31617266
      Nuno Lopes authored
      found with a smarter version of -Wunused-member-function that I'm playwing with.
      Appologies in advance if I removed someone's WIP code.
      
       include/llvm/CodeGen/MachineSSAUpdater.h            |    1 
       include/llvm/IR/DebugInfo.h                         |    3 
       lib/CodeGen/MachineSSAUpdater.cpp                   |   10 --
       lib/CodeGen/PostRASchedulerList.cpp                 |    1 
       lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp    |   10 --
       lib/IR/DebugInfo.cpp                                |   12 --
       lib/MC/MCAsmStreamer.cpp                            |    2 
       lib/Support/YAMLParser.cpp                          |   39 ---------
       lib/TableGen/TGParser.cpp                           |   16 ---
       lib/TableGen/TGParser.h                             |    1 
       lib/Target/AArch64/AArch64TargetTransformInfo.cpp   |    9 --
       lib/Target/ARM/ARMCodeEmitter.cpp                   |   12 --
       lib/Target/ARM/ARMFastISel.cpp                      |   84 --------------------
       lib/Target/Mips/MipsCodeEmitter.cpp                 |   11 --
       lib/Target/Mips/MipsConstantIslandPass.cpp          |   12 --
       lib/Target/NVPTX/NVPTXISelDAGToDAG.cpp              |   21 -----
       lib/Target/NVPTX/NVPTXISelDAGToDAG.h                |    2 
       lib/Target/PowerPC/PPCFastISel.cpp                  |    1 
       lib/Transforms/Instrumentation/AddressSanitizer.cpp |    2 
       lib/Transforms/Instrumentation/BoundsChecking.cpp   |    2 
       lib/Transforms/Instrumentation/MemorySanitizer.cpp  |    1 
       lib/Transforms/Scalar/LoopIdiomRecognize.cpp        |    8 -
       lib/Transforms/Scalar/SCCP.cpp                      |    1 
       utils/TableGen/CodeEmitterGen.cpp                   |    2 
       24 files changed, 2 insertions(+), 261 deletions(-)
      
      llvm-svn: 204560
      31617266
  5. Mar 22, 2014
    • Andrea Di Biagio's avatar
      [DAG] Fix an assertion failure caused by an invalid cast in method... · 5b0aacf1
      Andrea Di Biagio authored
      [DAG] Fix an assertion failure caused by an invalid cast in method 'BuildVectorSDNode::isConstantSplat'
      
      This patch renames method 'isConstantSplat' as 'getConstantSplatValue'
      (mainly for consistency reasons), and rewrites its logic to ensure
      that we always perform a legal 'cast<ConstantSDNode>'.
      
      Added test shift-combine-crash.ll to verify that DAGCombiner no longer crashes with an assertion failure in the attempt to simplify a vector shift by a vector of all undef counts.
      
      llvm-svn: 204536
      5b0aacf1
  6. Mar 21, 2014
  7. Mar 20, 2014
    • Mark Seaborn's avatar
      Remove LowerInvoke's obsolete "-enable-correct-eh-support" option · b6118c5b
      Mark Seaborn authored
      This option caused LowerInvoke to generate code using SJLJ-based
      exception handling, but there is no code left that interprets the
      jmp_buf stack that the resulting code maintained (llvm.sjljeh.jblist).
      This option has been obsolete for a while, and replaced by
      SjLjEHPrepare.
      
      This leaves the default behaviour of LowerInvoke, which is to convert
      invokes to calls.
      
      Differential Revision: http://llvm-reviews.chandlerc.com/D3136
      
      llvm-svn: 204388
      b6118c5b
    • Eric Christopher's avatar
      Typo. · 47f2be88
      Eric Christopher authored
      llvm-svn: 204378
      47f2be88
    • Eric Christopher's avatar
      Reapply DW_AT_low/high_pc patch: · 384f3feb
      Eric Christopher authored
          Use the range machinery for DW_AT_ranges and DW_AT_high/lo_pc.
      
          This commit moves us from a single range per subprogram to extending
          ranges if we are:
      
          a) In the same section, and
          b) In the same enclosing CU.
      
          This means we have more fine grained ranges for compile units, and fewer
          ranges overall when we have multiple functions in the same CU
          adjacent to each other in the object file.
      
          Also remove all of the earlier hacks around this functionality for
          function sections etc. Also update all of the testcases to take into
          account the merging functionality.
      
      with a fix for location entries in the debug_loc section:
      
      Make sure that debug loc entries are relative to the low_pc
      of the compile unit. This means that when we only have a single
      range that the offset should be just relative to the low_pc
      of the unit, for multiple ranges for a CU this means that we'll be
      relative to 0 which we emit along with DW_AT_ranges.
      
      This mostly shows up with linked binaries, so add a testcase with
      multiple CUs so that our location is going to be offset of a CU
      with a non-zero low_pc.
      
      llvm-svn: 204377
      384f3feb
    • David Blaikie's avatar
      Add comments from Eric's review of r204094. · 7ac51493
      David Blaikie authored
      llvm-svn: 204358
      7ac51493
    • Eric Christopher's avatar
      Revert "Use the range machinery for DW_AT_ranges and DW_AT_high/lo_pc." · e9551ec1
      Eric Christopher authored
      This appears to trigger failures with optimization and function arguments somehow.
      
      This reverts commit r204277.
      
      llvm-svn: 204286
      e9551ec1
  8. Mar 19, 2014
    • Eric Christopher's avatar
      Use the range machinery for DW_AT_ranges and DW_AT_high/lo_pc. · e33c9906
      Eric Christopher authored
      This commit moves us from a single range per subprogram to extending
      ranges if we are:
      
      a) In the same section, and
      b) In the same enclosing CU.
      
      This means we have more fine grained ranges for compile units, and fewer
      ranges overall when we have multiple functions in the same CU
      adjacent to each other in the object file.
      
      Also remove all of the earlier hacks around this functionality for
      function sections etc. Also update all of the testcases to take into
      account the merging functionality.
      
      llvm-svn: 204277
      e33c9906
    • David Blaikie's avatar
      DebugInfo: Use the comp_dir of the referencing type units when building debug_line.dwo · 47f4b82d
      David Blaikie authored
      This isn't a complete fix - it falls back to non-comp_dir when multiple
      compile units are in play. Adding a map of comp_dir to table is part of
      the more general solution, but I gave up (in the short term) when I
      realized I'd also have to calculate the size of each type unit so as to
      produce correct DW_AT_stmt_list attributes.
      
      llvm-svn: 204202
      47f4b82d
  9. Mar 18, 2014
Loading