Skip to content
  1. Aug 18, 2017
    • Jatin Bhateja's avatar
      Test commit access · e739fc7d
      Jatin Bhateja authored
      Summary: Adding a blank line.
      
      Differential Revision: https://reviews.llvm.org/D36859
      
      llvm-svn: 311143
      e739fc7d
    • Geoff Berry's avatar
      Revert "[MachineCopyPropagation] Extend pass to do COPY source forwarding" round 2 · bd47e8a4
      Geoff Berry authored
      This reverts commit r311135.
      
      sanitizer-x86_64-linux-android buildbot is timing out with just this
      patch applied.
      
      llvm-svn: 311142
      bd47e8a4
    • Richard Smith's avatar
      Increase tail dup threshold for -O3 from 3 to 4. · c0541dfa
      Richard Smith authored
      We see a modest performance improvement from this slightly higher tail dup threshold.
      
      Differential Revision: https://reviews.llvm.org/D36775
      
      llvm-svn: 311139
      c0541dfa
    • Craig Topper's avatar
      [X86] Remove SSE/AVX patterns for AND/XOR/OR/ANDN that checked for the inputs... · 1fae3ae6
      Craig Topper authored
      [X86] Remove SSE/AVX patterns for AND/XOR/OR/ANDN that checked for the inputs being bitcasted from floating point types.
      
      There's really no reason to do this we should just let isel pick the integer version and let the execution dependency fixing pass take care of moving to FP if necessary.
      
      It's not very reliable to look for bitcasts at the edges of patterns. If for some reason one input was bitcasted and the other wasn't, or if one was a v4f32 bitcast and one was a v2f64 bitcast, we would have fallen back to the integer pattern anyway.
      
      llvm-svn: 311138
      1fae3ae6
    • Tim Northover's avatar
      GlobalISel (AArch64): fix ABI at border between GPRs and SP. · 48fff995
      Tim Northover authored
      If a struct would end up half in GPRs and half on SP the ABI says it should
      actually go entirely on the stack. We were getting this wrong in GlobalISel
      before, causing compatibility issues.
      
      llvm-svn: 311137
      48fff995
    • Geoff Berry's avatar
      Re-enable "[MachineCopyPropagation] Extend pass to do COPY source forwarding" · 51f52c4f
      Geoff Berry authored
          Two issues identified by buildbots were addressed:
          - The pass no longer forwards COPYs to physical register uses, since
            doing so can break code that implicitly relies on the physical
            register number of the use.
          - The pass no longer forwards COPYs to undef uses, since doing so
            can break the machine verifier by creating LiveRanges that don't
            end on a use (since the undef operand is not considered a use).
      
          [MachineCopyPropagation] Extend pass to do COPY source forwarding
      
          This change extends MachineCopyPropagation to do COPY source forwarding.
      
          This change also extends the MachineCopyPropagation pass to be able to
          be run during register allocation, after physical registers have been
          assigned, but before the virtual registers have been re-written, which
          allows it to remove virtual register COPY LiveIntervals that become dead
          through the forwarding of all of their uses.
      
          Reviewers: qcolombet, javed.absar, MatzeB, jonpa
      
          Subscribers: jyknight, nemanjai, llvm-commits, nhaehnle, mcrosier, mgorny
      
          Differential Revision: https://reviews.llvm.org/D30751
      
      llvm-svn: 311135
      51f52c4f
    • Zachary Turner's avatar
      Fix warning about covered switch default. · 4c432b20
      Zachary Turner authored
      llvm-svn: 311129
      4c432b20
    • Tom Stellard's avatar
      AMDGPU: Add R600InstPrinter class · a096b126
      Tom Stellard authored
      Summary:
      This is step towards separating the GCN and R600 tablegen'd code.
      
      This is a little awkward for now, because the R600 functions won't have the
      MCSubtargetInfo parameter, so we need to have AMDMGPUInstPrinter
      delegate to R600InstPrinter, but once the tablegen'd code is split,
      we will be able to drop the delegation and use R600InstPrinter directly.
      
      Reviewers: arsenm
      
      Subscribers: kzhuravl, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D36444
      
      llvm-svn: 311128
      a096b126
  2. Aug 17, 2017
    • Jakub Kuderski's avatar
      [LoopRotate][Dominators] Use the incremental API to update DomTree · e608ef76
      Jakub Kuderski authored
      Summary: This patch teaches LoopRotate to use the new incremental API to update the DominatorTree.
      
      Reviewers: dberlin, davide, grosser, sanjoy
      
      Reviewed By: dberlin, davide
      
      Subscribers: hiraditya, llvm-commits, mzolotukhin
      
      Differential Revision: https://reviews.llvm.org/D35581
      
      llvm-svn: 311125
      e608ef76
    • Eugene Zelenko's avatar
      [CodeGen] Fix some Clang-tidy modernize and Include What You Use warnings;... · 6e07bfd0
      Eugene Zelenko authored
      [CodeGen] Fix some Clang-tidy modernize and  Include What You Use warnings; other minor fixes (NFC).
      
      llvm-svn: 311124
      6e07bfd0
    • Zachary Turner's avatar
      Remove unused variable. · 197bba00
      Zachary Turner authored
      llvm-svn: 311119
      197bba00
    • Zachary Turner's avatar
      [llvm-pdbutil] Fix some dumping issues. · 96bcd6a3
      Zachary Turner authored
      When dumping, we were treating the S_INLINESITESYM as referring
      to a type record, when it actually refers to an id record.  We
      had this correct in TypeIndexDiscovery, so our merging algorithm
      should be fine, but we had it wrong in the dumper, which means it
      would appear to work most of the time, unless the index was out
      of bounds in the type stream, when it would fail.  Fixed this, and
      audited a few other cases to make them match the behavior in
      TypeIndexDiscovery.
      
      Also, I've now observed a new symbol record with kind 0x1168 which
      I have no clue what it is, so to avoid crashing we have to just
      print "Unknown Symbol Kind".
      
      llvm-svn: 311117
      96bcd6a3
    • Zachary Turner's avatar
      Fix a few minor issues when dumping symbols. · f401e110
      Zachary Turner authored
      1) We weren't handling symbol types that weren't able to parse,
         even if we knew what the leaf type was.  This was triggering
         when trying to dump /DEBUG:FASTLINK PDBs, where we expect a
         certain symbol to show up, but we just don't know how to parse
         it.
      2) We lost the code for dumping record bytes, so this was added
         back.
      
      llvm-svn: 311116
      f401e110
    • Lang Hames's avatar
      [docs] Tweak phrasing of the varargs explanation in the command section of the · df1e59b6
      Lang Hames authored
      CMake primer.
      
      This moves the introduction of the ARGV/ARGN variables up to immmediately follow
      the introduction of the concept of variable argument functions, and explicitly
      connects this concept to C varargs functions.
      
      llvm-svn: 311113
      df1e59b6
    • Lang Hames's avatar
      3a6a2d26
    • Jonas Devlieghere's avatar
      Revert "[Debug info] Transfer DI to fragment expressions for split integer values." · 30756da2
      Jonas Devlieghere authored
      This reverts commit r311102.
      
      llvm-svn: 311111
      30756da2
    • Alexey Bataev's avatar
      [SimplifyCFG] Add a test for preserve store alignment, NFC. · 84ad9ae0
      Alexey Bataev authored
      llvm-svn: 311106
      84ad9ae0
    • Sanjay Patel's avatar
      [x86] add tests for vector select-of-constants; NFC · f2d67f7e
      Sanjay Patel authored
      We've discussed canonicalizing to this form in IR, so the backend
      should be prepared to lower these in ways better than what we see
      here in most cases.
      
      llvm-svn: 311103
      f2d67f7e
    • Jonas Devlieghere's avatar
      [Debug info] Transfer DI to fragment expressions for split integer values. · 622fedc0
      Jonas Devlieghere authored
      This patch teaches the SDag type legalizer how to split up debug info for
      integer values that are split into a hi and lo part.
      
      Differential Revision: https://reviews.llvm.org/D36805
      
      llvm-svn: 311102
      622fedc0
    • Sanjay Patel's avatar
      [PowerPC] add tests for vector select-of-constants; NFC · 18424e15
      Sanjay Patel authored
      We've discussed canonicalizing to this form in IR, so the backend
      should be prepared to lower these in ways better than what we see
      here.
      
      llvm-svn: 311099
      18424e15
    • Adrian Prantl's avatar
      Improve line debug info when translating a CaseBlock to SDNodes. · 6a57daad
      Adrian Prantl authored
      The SelectionDAGBuilder translates various conditional branches into
      CaseBlocks which are then translated into SDNodes. If a conditional
      branch results in multiple CaseBlocks only the first CaseBlock is
      translated into SDNodes immediately, the rest of the CaseBlocks are
      put in a queue and processed when all LLVM IR instructions in the
      basic block have been processed.
      
      When a CaseBlock is transformed into SDNodes the SelectionDAGBuilder
      is queried for the current LLVM IR instruction and the resulting
      SDNodes are annotated with the debug info of the current
      instruction (if it exists and has debug metadata).
      
      When the deferred CaseBlocks are processed, the SelectionDAGBuilder
      does not have a current LLVM IR instruction, and the resulting SDNodes
      will not have any debuginfo. As DwarfDebug::beginInstruction() outputs
      a .loc directive for the first instruction in a labeled
      block (typically the case for something coming from a CaseBlock) this
      tends to produce a line-0 directive.
      
      This patch changes the handling of CaseBlocks to store the current
      instruction's debug info into the CaseBlock when it is created (and the
      SelectionDAGBuilder knows the current instruction) and to always use
      the stored debug info when translating a CaseBlock to SDNodes.
      
      Patch by Frej Drejhammar!
      
      Differential Revision: https://reviews.llvm.org/D36671
      
      llvm-svn: 311097
      6a57daad
    • Jakub Kuderski's avatar
      [Dominators] Teach LoopUnswitch to use the incremental API · e35a4491
      Jakub Kuderski authored
      Summary:
      This patch makes LoopUnswitch use new incremental API for updating dominators.
      It also updates SplitCriticalEdge, as it is called in LoopUnswitch.
      
      There doesn't seem to be any noticeable performance difference when bootstrapping clang with this patch.
      
      Reviewers: dberlin, davide, sanjoy, grosser, chandlerc
      
      Reviewed By: davide, grosser
      
      Subscribers: mzolotukhin, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D35528
      
      llvm-svn: 311093
      e35a4491
    • Craig Topper's avatar
      [AVX512] Don't switch unmasked subvector insert/extract instructions when AVX512DQI is enabled. · 3a622a14
      Craig Topper authored
      There's no reason to switch instructions with and without DQI. It just creates extra isel patterns and test divergences.
      
      There is however value in enabling the masked version of the instructions with DQI.
      
      This required introducing some new multiclasses to enabling this splitting.
      
      Differential Revision: https://reviews.llvm.org/D36661
      
      llvm-svn: 311091
      3a622a14
    • Craig Topper's avatar
      [X86] Remove memopmmx pattern fragment · 59608480
      Craig Topper authored
      Summary: Just like the FIXME says, there is no alignment requirement for MMX.
      
      Reviewers: RKSimon, zvi, igorb
      
      Reviewed By: RKSimon
      
      Subscribers: llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D36815
      
      llvm-svn: 311090
      59608480
    • Victor Leschuk's avatar
      Mark Verifier/invalid-eh.ll as unsupported on windows · bcfd8e28
      Victor Leschuk authored
      Mark this unsupported for now as it causes tests hangs on buildbot.
      Will place it back when the problem is debugged.
      
      llvm-svn: 311089
      bcfd8e28
    • Simon Dardis's avatar
      [dfsan] Add explicit zero extensions for shadow parameters in function wrappers. · b5205c69
      Simon Dardis authored
      In the case where dfsan provides a custom wrapper for a function,
      shadow parameters are added for each parameter of the function.
      These parameters are i16s. For targets which do not consider this
      a legal type, the lack of sign extension information would cause
      LLVM to generate anyexts around their usage with phi variables
      and calling convention logic.
      
      Address this by introducing zero exts for each shadow parameter.
      
      Reviewers: pcc, slthakur
      
      Differential Revision: https://reviews.llvm.org/D33349
      
      llvm-svn: 311087
      b5205c69
    • Daniel Sanders's avatar
      [globalisel][tablegen] Generate TypeObject table. NFC · 032e7f2c
      Daniel Sanders authored
      Summary:
      Generate the type table from the types used by a target rather than hard-coding
      the union of types used by all targets.
      
      Depends on D36084
      
      Reviewers: ab, t.p.northover, qcolombet, rovka, aditya_nandakumar
      
      Reviewed By: rovka
      
      Subscribers: kristof.beyls, igorb, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D36085
      
      llvm-svn: 311084
      032e7f2c
    • Simon Pilgrim's avatar
    • Amjad Aboud's avatar
      [X86] Refactoring of X86TargetLowering::EmitLoweredSelect. NFC. · 19f15843
      Amjad Aboud authored
      Authored by aivchenk
      Differential Revision: https://reviews.llvm.org/D35685
      
      llvm-svn: 311082
      19f15843
    • Davide Italiano's avatar
      [Verifier] Avoid visiting DIGlobalVariables twice. · 903fd3ea
      Davide Italiano authored
      We currently visit them twice.
      Once, through `visitMDNode()` -> (the code generated by)
        `../include/llvm/IR/Metadata.def:109` -> `visitDIGlobalVariable()`
      Then, through `visitMDNode()` -> `visitDIGlobalVariableExpression()`
        -> `visitDIGlobalVariable()`
      
      This results in verification failures printed twice, e.g.:
      
        $ ./opt -verify ../../test/DebugInfo/pr34186.ll
        missing global variable type
        !4 = distinct !DIGlobalVariable(name: "pat", scope: !0,
          file: !1, line: 27, isLocal: true, isDefinition: true)
        missing global variable type
        !4 = distinct !DIGlobalVariable(name: "pat", scope: !0,
          file: !1, line: 27, isLocal: true, isDefinition: true)
        ./opt: ../../test/DebugInfo/pr34186.ll: error: input module is broken!
      
      The patch removes one call so we ensure each GV is visited exactly once.
      
      Differential Revision:  https://reviews.llvm.org/D36797
      
      llvm-svn: 311081
      903fd3ea
    • Ayal Zaks's avatar
      [LV] Using VPlan to model the vectorized code and drive its transformation · 66278833
      Ayal Zaks authored
      VPlan is an ongoing effort to refactor and extend the Loop Vectorizer. This
      patch introduces the VPlan model into LV and uses it to represent the vectorized
      code and drive the generation of vectorized IR.
      
      In this patch VPlan models the vectorized loop body: the vectorized control-flow
      is represented using VPlan's Hierarchical CFG, with predication refactored from
      being a post-vectorization-step into a vectorization planning step modeling
      if-then VPRegionBlocks, and generating code inline with non-predicated code. The
      vectorized code within each VPBasicBlock is represented as a sequence of
      Recipes, each responsible for modelling and generating a sequence of IR
      instructions. To keep the size of this commit manageable the Recipes in this
      patch are coarse-grained and capture large chunks of LV's code-generation logic.
      The constructed VPlans are dumped in dot format under -debug.
      
      This commit retains current vectorizer output, except for minor instruction
      reorderings; see associated modifications to lit tests.
      
      For further details on the VPlan model see docs/Proposals/VectorizationPlan.rst
      and its references.
      
      Authors: Gil Rapaport and Ayal Zaks
      
      Differential Revision: https://reviews.llvm.org/D32871
      
      llvm-svn: 311077
      66278833
    • Daniel Sanders's avatar
      Re-commit: [globalisel][tablegen] Support zero-instruction emission. · edd0784b
      Daniel Sanders authored
      Summary:
      Support the case where an operand of a pattern is also the whole of the
      result pattern. In this case the original result and all its uses must be
      replaced by the operand. However, register class restrictions can require
      a COPY. This patch handles both cases by always emitting the copy and
      leaving it for the register allocator to optimize.
      
      The previous commit failed on Windows machines due to a flaw in the sort
      predicate which allowed both A < B < C and B == C to be satisfied
      simultaneously. The cause of this was some sloppiness in the priority order of
      G_CONSTANT instructions compared to other instructions. These had equal priority
      because it makes no difference, however there were operands had higher priority
      than G_CONSTANT but lower priority than any other instruction. As a result, a
      priority order between G_CONSTANT and other instructions must be enforced to
      ensure the predicate defines a strict weak order.
      
      Reviewers: ab, t.p.northover, qcolombet, rovka, aditya_nandakumar
      
      Subscribers: javed.absar, kristof.beyls, igorb, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D36084
      
      llvm-svn: 311076
      edd0784b
    • Jonas Paulsson's avatar
      [SystemZ] Also wrap TII with #ifndef NDEBUG in constructor initilizer list. · 593d49c0
      Jonas Paulsson authored
      TII needs to be wrapped with #ifndef NDEBUG to silece compiler warnings.
      
      llvm-svn: 311075
      593d49c0
    • Jonas Paulsson's avatar
      [SystemZ] Add a wrapping with #ifndef NDEBUG to silence warning. · d346924a
      Jonas Paulsson authored
      SystemZHazardRecognizer::TII is only used for debug output, so it needs
      also to be wrapped with #ifndef NDEBUG.
      
      llvm-svn: 311074
      d346924a
    • Jonas Paulsson's avatar
      [SystemZ, MachineScheduler] Improve post-RA scheduling. · 57a705d9
      Jonas Paulsson authored
      The idea of this patch is to continue the scheduler state over an MBB boundary
      in the case where the successor block has only one predecessor. This means
      that the scheduler will continue in the successor block (after emitting any
      branch instructions) with e.g. maintained processor resource counters.
      Benchmarks have been confirmed to benefit from this.
      
      The algorithm in MachineScheduler.cpp that extracts scheduling regions of an
      MBB has been extended so that the strategy may optionally reverse the order
      of processing the regions themselves. This is controlled by a new method
      doMBBSchedRegionsTopDown(), which defaults to false.
      
      Handling the top-most region of an MBB first also means that a top-down
      scheduler can continue the scheduler state across any scheduling boundary
      between to regions inside MBB.
      
      Review: Ulrich Weigand, Matthias Braun, Andy Trick.
      https://reviews.llvm.org/D35053
      
      llvm-svn: 311072
      57a705d9
    • Elad Cohen's avatar
      [SelectionDAG] Teach the vector-types operand scalarizer about SETCC · 124d3282
      Elad Cohen authored
      When v1i1 is legal (e.g. AVX512) the legalizer can reach
      a case where a v1i1 SETCC with an illgeal vector type operand
      wasn't scalarized (since v1i1 is legal) but its operands does
      have to be scalarized. This used to assert because SETCC was
      missing from the vector operand scalarizer.
      
      This patch attemps to teach the legalizer to handle these cases
      by scalazring the operands, converting the node into a scalar
      SETCC node.
      
      Differential revision: https://reviews.llvm.org/D36651
      
      llvm-svn: 311071
      124d3282
    • Martin Storsjö's avatar
      [llvm-dlltool] Improve an error message when unable to open files. NFC. · caff3268
      Martin Storsjö authored
      Differential Revision: https://reviews.llvm.org/D36818
      
      llvm-svn: 311069
      caff3268
    • Martin Storsjö's avatar
      9d8ecb43
    • Serguei Katkov's avatar
      [CGP] Fix the rematerialization of gc.relocates · 9e5604db
      Serguei Katkov authored
      If we want to substitute the relocation of derived pointer with gep of base then
      we must ensure that relocation of base dominates the relocation of derived pointer.
      
      Currently only check for basic block is present. However it is possible that both
      relocation are in the same basic block but relocation of derived pointer is defined
      earlier.
      
      The patch moves the relocation of base pointer right before relocation of derived
      pointer in this case.
      
      Reviewers: sanjoy,artagnon,igor-laevsky,reames
      Reviewed By: reames
      Subscribers: llvm-commits
      Differential Revision: https://reviews.llvm.org/D36462
      
      llvm-svn: 311067
      9e5604db
    • Geoff Berry's avatar
      Revert "[MachineCopyPropagation] Extend pass to do COPY source forwarding" · 4e38e02e
      Geoff Berry authored
      This reverts commit r311038.
      
      Several buildbots are breaking, and at least one appears to be due to
      the forwarding of physical regs enabled by this change.  Reverting while
      I investigate further.
      
      llvm-svn: 311062
      4e38e02e
Loading