Skip to content
  1. Jun 10, 2017
  2. Jun 09, 2017
    • Eugene Zelenko's avatar
      [Support] Fix some Clang-tidy modernize-use-using and Include What You Use... · 416e0592
      Eugene Zelenko authored
      [Support] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC).
      
      llvm-svn: 305119
      416e0592
    • Craig Topper's avatar
      [LVI] Fix spelling error in comment. NFC · 7ad13f25
      Craig Topper authored
      llvm-svn: 305115
      7ad13f25
    • Craig Topper's avatar
      [LVI] Const correct and rename the LVILatticeVal parameter to getPredicateResult. NFC · 6dd9dcf2
      Craig Topper authored
      Previously it was non-const reference named Result which would tend to make someone think that it was an outparam when really its an input.
      
      llvm-svn: 305114
      6dd9dcf2
    • Zachary Turner's avatar
      [pdb] Support CoffSymbolRVA debug subsection. · 3226fe95
      Zachary Turner authored
      llvm-svn: 305108
      3226fe95
    • Yaxun Liu's avatar
      [SROA] Fix APInt size when load/store have different address space · 6455b0db
      Yaxun Liu authored
      Currently there is a bug in SROA::presplitLoadsAndStores which causes assertion in
      GEPOperator::accumulateConstantOffset.
      
      Basically it does not consider the situation that the pointer operand of load or store
      may be in a non-zero address space and its size may be different from the size of
      a pointer in address space 0.
      
      This patch fixes assertion when compiling Blender Cycles kernels for amdgpu backend.
      
      Diffferential Revision: https://reviews.llvm.org/D33298
      
      llvm-svn: 305107
      6455b0db
    • Zachary Turner's avatar
      Rename llvm-pdbdump -> llvm-pdbutil. · bd336e44
      Zachary Turner authored
      This is to reflect the evolving nature of the tool as being
      useful for more than just dumping PDBs, as it can do many other
      things.
      
      Differential Revision: https://reviews.llvm.org/D34062
      
      llvm-svn: 305106
      bd336e44
    • Francis Ricci's avatar
      [ADT] Make iterable SmallVector template overrides more specific · e22b6969
      Francis Ricci authored
      Summary:
      This prevents the iterator overrides from being selected in
      the case where non-iterator types are used as arguments, which
      is of particular importance in cases where other overrides with
      identical types exist.
      
      Reviewers: dblaikie, bkramer, rafael
      
      Subscribers: llvm-commits, efriedma
      
      Differential Revision: https://reviews.llvm.org/D33919
      
      llvm-svn: 305105
      e22b6969
    • Keno Fischer's avatar
      [Sink] Fix predicate in legality check · 5329174c
      Keno Fischer authored
      Summary:
      isSafeToSpeculativelyExecute is the wrong predicate to use here.
      All that checks for is whether it is safe to hoist a value due to
      unaligned/un-dereferencable accesses. However, not only are we doing
      sinking rather than hoisting, our concern is that the location
      we're loading from may have been modified. Instead forbid sinking
      any load across a critical edge.
      
      Reviewers: majnemer
      
      Subscribers: davide, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D33179
      
      llvm-svn: 305102
      5329174c
    • Benjamin Kramer's avatar
      01a48b5d
    • Stanislav Mekhanoshin's avatar
      [AMDGPU] Add intrinsics for alignbit and alignbyte instructions · 1a61ab81
      Stanislav Mekhanoshin authored
      Differential Revision: https://reviews.llvm.org/D34046
      
      llvm-svn: 305098
      1a61ab81
    • Benjamin Kramer's avatar
      [llvm-cvtres] Don't polute the test directory. · a5a17363
      Benjamin Kramer authored
      llvm-svn: 305097
      a5a17363
    • Zachary Turner's avatar
      Fix -Wreorder-fields warning. · 1203bc4e
      Zachary Turner authored
      llvm-svn: 305095
      1203bc4e
    • Zachary Turner's avatar
      Allow VarStreamArray to use stateful extractors. · 7e62cd17
      Zachary Turner authored
      Previously extractors tried to be stateless with any additional
      context information needed in order to parse items being passed
      in via the extraction method.  This led to quite cumbersome
      implementation challenges and awkwardness of use.  This patch
      brings back support for stateful extractors, making the
      implementation and usage simpler.
      
      llvm-svn: 305093
      7e62cd17
    • Eric Beckmann's avatar
      Implement COFF emission for parsed Windows Resource ( .res) files. · d9de6389
      Eric Beckmann authored
      Summary: Add the WindowsResourceCOFFWriter class for producing the final COFF after all parsing is done.
      
      Reviewers: hiraditya!, zturner, ruiu
      
      Subscribers: llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D34020
      
      llvm-svn: 305092
      d9de6389
    • Simon Pilgrim's avatar
      [X86][SSE] Add support for PACKSS nodes to faux shuffle extraction · 3d37b1a2
      Simon Pilgrim authored
      If the inputs won't saturate during packing then we can treat the PACKSS as a truncation shuffle
      
      llvm-svn: 305091
      3d37b1a2
    • Vassil Vassilev's avatar
      We do not need google test utils if we disabled LLVM_INCLUDE_TESTS · cb28894a
      Vassil Vassilev authored
      Fixes embedded uses of llvm where google testing framework is provided outside.
      
      llvm-svn: 305088
      cb28894a
    • Craig Topper's avatar
      [LazyValueInfo] Don't run the more complex predicate handling code for EQ and... · 31ce4ec2
      Craig Topper authored
      [LazyValueInfo] Don't run the more complex predicate handling code for EQ and NE in getPredicateResult
      
      Summary:
      Unless I'm mistaken, the special handling for EQ/NE should cover everything and there is no reason to fallthrough to the more complex code. For that matter I'm not sure there's any reason to special case EQ/NE other than avoiding creating temporary ConstantRanges.
      
      This patch moves the complex code into an else so we only do it when we are handling a predicate other than EQ/NE.
      
      Reviewers: anna, reames, resistor, Farhana
      
      Reviewed By: anna
      
      Subscribers: llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D34000
      
      llvm-svn: 305086
      31ce4ec2
    • Krzysztof Parzyszek's avatar
      [Hexagon] Fixes and updates to the selection patterns · 7aca2fd8
      Krzysztof Parzyszek authored
      - Add some missing patterns.
      - Use C4_cmplte in branch patterns.
      - Fix signedness of immediate operand in M2_accii.
      
      llvm-svn: 305085
      7aca2fd8
    • Zvi Rackover's avatar
      SelectionDAG: Remove deleted nodes from legalized set to avoid clash with newly created nodes · 3a2c4b48
      Zvi Rackover authored
      Summary:
      During DAG legalization loop in SelectionDAG::Legalize(),
      bookkeeping of the SDNodes that were already legalized is implemented
      with SmallPtrSet (LegalizedNodes). This kind of set stores only pointers
      to objects, not the objects themselves. Unfortunately, if SDNode is
      deleted during legalization for some reason, LegalizedNodes set is not
      informed about this fact. This wouldn’t be so bad, if SelectionDAG wouldn’t reuse
      space deallocated after deletion of unused nodes, for creation of new
      ones. Because of this, new nodes, created during legalization often can
      have pointers identical to ones that have been previously legalized,
      added to the LegalizedNodes set, and deleted afterwards. This in turn
      causes, that newly created nodes, sharing the same pointer as deleted
      old ones, are present in LegalizedNodes *already at the moment of
      creation*, so we never call Legalize on them.
      The fix facilitates the fact, that DAG notifies listeners about each
      modification. I have registered DAGNodeDeletedListener inside
      SelectionDAG::Legalize, with a callback function that removes any
      pointer of any deleted SDNode from the LegalizedNodes set. With this
      modification, LegalizeNodes set does not contain pointers to nodes that
      were deleted, so newly created nodes can always be inserted to it, even
      if they share pointers with old deleted nodes.
      
      Patch by pawel.szczerbuk@intel.com
      
      The issue this patch addresses causes failures in an out-of-tree target,
      and i was not able to create a reproducer for an in-tree target, hence
      there is no test-case.
      
      Reviewers: delena, spatel, RKSimon, hfinkel, davide, qcolombet
      
      Reviewed By: delena
      
      Subscribers: llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D33891
      
      llvm-svn: 305084
      3a2c4b48
    • Simon Dardis's avatar
      Reland "[SelectionDAG] Enable target specific vector scalarization of calls and returns" · 212cccb2
      Simon Dardis authored
      By target hookifying getRegisterType, getNumRegisters, getVectorBreakdown,
      backends can request that LLVM to scalarize vector types for calls
      and returns.
      
      The MIPS vector ABI requires that vector arguments and returns are passed in
      integer registers. With SelectionDAG's new hooks, the MIPS backend can now
      handle LLVM-IR with vector types in calls and returns. E.g.
      'call @foo(<4 x i32> %4)'.
      
      Previously these cases would be scalarized for the MIPS O32/N32/N64 ABI for
      calls and returns if vector types were not legal. If vector types were legal,
      a single 128bit vector argument would be assigned to a single 32 bit / 64 bit
      integer register.
      
      By teaching the MIPS backend to inspect the original types, it can now
      implement the MIPS vector ABI which requires a particular method of
      scalarizing vectors.
      
      Previously, the MIPS backend relied on clang to scalarize types such as "call
      @foo(<4 x float> %a) into "call @foo(i32 inreg %1, i32 inreg %2, i32 inreg %3,
      i32 inreg %4)".
      
      This patch enables the MIPS backend to take either form for vector types.
      
      The previous version of this patch had a "conditional move or jump depends on
      uninitialized value".
      
      Reviewers: zoran.jovanovic, jaydeep, vkalintiris, slthakur
      
      Differential Revision: https://reviews.llvm.org/D27845
      
      llvm-svn: 305083
      212cccb2
    • Sanjay Patel's avatar
      [SimplifyLibCalls] fix formatting; NFC · 70db4246
      Sanjay Patel authored
      llvm-svn: 305081
      70db4246
    • Sanjay Patel's avatar
      [ValueTracking] fix typo; NFC · fef83e8f
      Sanjay Patel authored
      llvm-svn: 305080
      fef83e8f
    • David Stuttard's avatar
      [AMDGPU] Fix for issue in alloca to vector promotion pass · 82618baa
      David Stuttard authored
      Summary:
      Alloca promotion pass not dealing with non-canonical input
      
      Added some additional checks so the pass simply backs-off forms it can't deal with (non-canonical)
      
      Also added some test cases in non-canonical form to check that it no longer crashes
      
      Subscribers: arsenm, kzhuravl, wdng, nhaehnle, yaxunl, tpr, t-tye
      
      Differential Revision: https://reviews.llvm.org/D31710
      
      llvm-svn: 305079
      82618baa
    • Javed Absar's avatar
      [ARM] Custom machine-scheduler. NFCI. · 9e1ff865
      Javed Absar authored
      This patch creates a customised machine-scheduler for ARM targets,
      so that subsequently DAG mutations etc can be added.
      Reviewed by: hahn, rengolin, rovka. 
      Differential Revision: https://reviews.llvm.org/D34039
      
      llvm-svn: 305078
      9e1ff865
    • Nirav Dave's avatar
      [MC] Fix compiler crash in AsmParser::Lex · 670109d8
      Nirav Dave authored
      When an empty comment is present in an assembly file, the compiler will crash because it checks the first character for '\n' or '\r'.
      The fix consists of also checking if the string is empty before accessing the *front* method of the StringRef.
      A test is included for the x86 target, but this issue is reproducible with other targets as well.
      
      Patch by Alexandru Guduleasa!
      
      Reviewers: niravd, grosbach, llvm-commits
      
      Reviewed By: niravd
      
      Differential Revision: https://reviews.llvm.org/D33993
      
      llvm-svn: 305077
      670109d8
    • Krzysztof Parzyszek's avatar
      [Hexagon] Add LLVM header to HexagonPatterns.td · 78814155
      Krzysztof Parzyszek authored
      llvm-svn: 305074
      78814155
    • Serge Rogatch's avatar
      [XRay] Fix computation of function size subject to XRay threshold · 85427c0d
      Serge Rogatch authored
      Summary:
      Currently XRay compares its threshold against `Function::size()` . However, `Function::size()` returns the number of basic blocks (as I understand, such as cycle bodies, if/else bodies, switch-case bodies, etc.), rather than the number of instructions.
      
      The name of the parameter `-fxray-instruction-threshold=N`, as well as XRay documentation at http://llvm.org/docs/XRay.html , suggests that instructions should be counted, rather than the number of basic blocks.
      
      I see two options:
      1. Count the number of MachineInstr`s in MachineFunction : this gives better  estimate for the number of assembly instructions on the target. So a user can check in disassembly that the threshold works more or less correctly.
      2. Count the number of Instruction`s in a Function : AFAIK, this gives correct number of IR instructions, which the user can check in IR listing. However, this number may be far (several times for small functions) from the number of assembly instructions finally emitted.
      
      Option 1 is implemented in this patch because I think that having the closer estimate for the number of assembly instructions emitted is more important than to have a clear definition of the metric.
      
      Reviewers: dberris, rengolin
      
      Reviewed By: dberris
      
      Subscribers: llvm-commits, iid_iunknown
      
      Differential Revision: https://reviews.llvm.org/D34027
      
      llvm-svn: 305072
      85427c0d
    • Nirav Dave's avatar
      Prevent RemoveDeadNodes from deleted already deleted node. · 43a4d812
      Nirav Dave authored
      This prevents against assertion errors like PR32659 which occur from a
      replacement deleting a node after it's been added to the list argument
      of RemoveDeadNodes. The specific failure from PR32659 does not
      currently happen, but it is still potentially possible. The underlying
      cause is that the callers of the change dfunction builds up a list of
      nodes to delete after having moved their uses and it possible that a
      move of a later node will cause a previously deleted nodes to be
      deleted.
      
      Reviewers: bkramer, spatel, davide
      
      Reviewed By: spatel
      
      Subscribers: llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D33731
      
      llvm-svn: 305070
      43a4d812
    • Oliver Stannard's avatar
      [ARM] Add scheduling info for VFMS · ad097355
      Oliver Stannard authored
      The scalar VFMS instructions did not have scheduling information attached (but
      VFMA did), which was causing assertion failures with the Cortex-A57 scheduling
      model and -fp-contract=fast.
      
      Differential Revision: https://reviews.llvm.org/D34040
      
      llvm-svn: 305064
      ad097355
    • NAKAMURA Takumi's avatar
    • Stefan Maksimovic's avatar
      Test commit: remove whitespace · add20f8f
      Stefan Maksimovic authored
      llvm-svn: 305059
      add20f8f
    • David Blaikie's avatar
      bugpoint: disabling symbolication of bugpoint-executed programs · 4a60d370
      David Blaikie authored
      Initial implementation - needs similar work/testing for other tools
      bugpoint invokes (llc, lli I think, maybe more).
      
      Alternatively (as suggested by chandlerc@) an environment variable could
      be used. This would allow the option to pass transparently through user
      scripts, pass to compilers if they happened to be LLVM-ish, etc.
      
      I worry a bit about using cl::opt in the crash handling code - LLVM
      might crash early, perhaps before the cl::opt is properly initialized?
      Or at least before arguments have been parsed?
      
       - should be OK since it defaults to "pretty", so if the crash is very
       early in opt parsing, etc, then crash reports will still be symbolized.
      
      I shyed away from doing this with an environment variable when I
      realized that would require copying the existing environment and
      appending the env variable of interest. But it seems there's no existing
      LLVM API for accessing the environment (even the Support tests for
      process launching have their own ifdefs for getting the environment). It
      could be added, but seemed like a higher bar/untested codepath to
      actually add environment variables.
      
      Most importantly, this reduces the runtime of test/BugPoint/metadata.ll
      in a split-dwarf Debug build from 1m34s to 6.5s by avoiding a lot of
      symbolication. (this wasn't a problem for non-split-dwarf builds only
      because the executable was too large to map into memory (due to bugpoint
      setting a 400MB memory (including address space - not sure why? Going to
      remove that) limit on the child process) so symbolication would fail
      fast & wouldn't spend all that time parsing DWARF, etc)
      
      Reviewers: chandlerc, dannyb
      
      Differential Revision: https://reviews.llvm.org/D33804
      
      llvm-svn: 305056
      4a60d370
    • Serguei Katkov's avatar
      [IndVars] Add an option to be able to disable LFTR · 38414b57
      Serguei Katkov authored
      This change adds an option disable-lftr to be able to disable Linear Function Test Replace optimization.
      By default option is off so current behavior is not changed.
      
      Reviewers: reames, sanjoy, wmi, andreadb, apilipenko
      Reviewed By: sanjoy
      Subscribers: llvm-commits
      Differential Revision: https://reviews.llvm.org/D33979
      
      llvm-svn: 305055
      38414b57
    • George Burgess IV's avatar
      [LoopVectorize] Don't preserve nsw/nuw flags on shrunken ops. · a20352e1
      George Burgess IV authored
      If we're shrinking a binary operation, it may be the case that the new
      operations wraps where the old didn't. If this happens, the behavior
      should be well-defined. So, we can't always carry wrapping flags with us
      when we shrink operations.
      
      If we do, we get incorrect optimizations in cases like:
      
      void foo(const unsigned char *from, unsigned char *to, int n) {
        for (int i = 0; i < n; i++)
          to[i] = from[i] - 128;
      }
      
      which gets optimized to:
      
      void foo(const unsigned char *from, unsigned char *to, int n) {
        for (int i = 0; i < n; i++)
          to[i] = from[i] | 128;
      }
      
      Because:
      - InstCombine turned `sub i32 %from.i, 128` into
        `add nuw nsw i32 %from.i, 128`.
      - LoopVectorize vectorized the add to be `add nuw nsw <16 x i8>` with a
        vector full of `i8 128`s
      - InstCombine took advantage of the fact that the newly-shrunken add
        "couldn't wrap", and changed the `add` to an `or`.
      
      InstCombine seems happy to figure out whether we can add nuw/nsw on its
      own, so I just decided to drop the flags. There are already a number of
      places in LoopVectorize where we rely on InstCombine to clean up.
      
      llvm-svn: 305053
      a20352e1
    • David Blaikie's avatar
      Inliner: Don't touch indirect calls · cb9327b0
      David Blaikie authored
      Other comments/implications are that this isn't intended behavior (nor
      perserved/reimplemented in the new inliner) & complicates fixing the
      'inlining' of trivially dead calls without consulting the cost function
      first.
      
      llvm-svn: 305052
      cb9327b0
    • Rui Ueyama's avatar
      Fix -Wunused-variable. · 365d4d00
      Rui Ueyama authored
      llvm-svn: 305051
      365d4d00
    • Craig Topper's avatar
      [llvm-pdbdump] Fix -Wpessimizing-move warnings. · 84166788
      Craig Topper authored
      llvm-svn: 305050
      84166788
    • Craig Topper's avatar
      [InstCombine] Pass a proper context instruction to all of the calls into InstSimplify · a4205622
      Craig Topper authored
      Summary: This matches the behavior we already had for compares and makes us consistent everywhere.
      
      Reviewers: dberlin, hfinkel, spatel
      
      Reviewed By: dberlin
      
      Subscribers: llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D33604
      
      llvm-svn: 305049
      a4205622
    • Bob Haarman's avatar
      [codeview] use 32-bit integer for RelocOffset in DebugLinesSubsection · fdf499bf
      Bob Haarman authored
      Summary:
      RelocOffset is a 32-bit value, but we previously truncated it to 16 bits.
      
      Fixes PR33335.
      
      Reviewers: zturner, hiraditya!
      
      Reviewed By: zturner
      
      Subscribers: llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D33968
      
      llvm-svn: 305043
      fdf499bf
Loading