Skip to content
  1. May 25, 2017
    • Kyle Butt's avatar
      PPC: Correct Size for GETtlsADDR · 13379d7c
      Kyle Butt authored
      PPC::GETtlsADDR is lowered to a branch and a nop, by the assembly
      printer. Its size was incorrectly marked as 4, correct it to 8. The
      incorrect size can cause incorrect branch relaxation in
      PPCBranchSelector under the right conditions.
      
      llvm-svn: 303904
      13379d7c
    • Nico Weber's avatar
      Revert r303859, CodeGen/AMDGPU/llvm.amdgcn.s.getpc.ll fails on bots. · b3d83a09
      Nico Weber authored
      llvm-svn: 303902
      b3d83a09
    • Manoj Gupta's avatar
      [AArch64]: add 'a' inline asm operand modifier. · d536180f
      Manoj Gupta authored
      Summary:
      This is used in the Linux kernel, and effectively just means "print an
      address". This brings back r193593.
      
      Reviewed by: Renato Golin
      
      Reviewers: t.p.northover, rengolin, richard.barton.arm, kristof.beyls
      
      Subscribers: aemerson, javed.absar, llvm-commits, eraman
      
      Differential Revision: https://reviews.llvm.org/D33558
      
      llvm-svn: 303901
      d536180f
    • Adrian Prantl's avatar
      Fix SelectionDAGBuilder::getDbgValue to not expect DW_OP_deref on FI vars · f0621926
      Adrian Prantl authored
      This fixes an oversight in r300522, which changed alloca
      dbg.values to no longer emit a DW_OP_deref.
      
      The array.ll testcase was regenerated from source.
      
      Fixes PR33166:
      https://bugs.llvm.org/show_bug.cgi?id=33166
      
      llvm-svn: 303897
      f0621926
    • Adrian Prantl's avatar
      Delete an obsolete paragraph in LangRef. · 14bd2443
      Adrian Prantl authored
      llvm-svn: 303896
      14bd2443
    • David Blaikie's avatar
      DebugInfo: Produce debug_{gnu_}pub{names,types} entries when explicitly... · b3cee2fb
      David Blaikie authored
      DebugInfo: Produce debug_{gnu_}pub{names,types} entries when explicitly requested, even in -gmlt or when empty
      
      Turns out gold doesn't use the DW_AT_GNU_pubnames to decide whether to
      parse the rest of the DIEs when building gdb-index. This causes gold to
      trip over LLVM's output when there are DW_FORM_ref_addr present.
      
      Gold does use the presence of a debug_gnu_pub{names,types} entry for the
      CU to skip parsing the debug_info portion, so make sure that's included
      even when empty (technically, when empty there couldn't be any ref_addr
      anyway - it only came up when gmlt didn't produce any (even non-empty)
      pubnames - but given what that reveals about gold's implementation, this
      seems like a good thing to do for consistency).
      
      llvm-svn: 303894
      b3cee2fb
    • Bob Haarman's avatar
      [llvm-pdbdump] [yaml2pdb] always include object file name in module info · ea91fafd
      Bob Haarman authored
      Summary:
      Previously, the yaml2pdb subcommand of llvm-pdbdump only
      included object file names in module info if a module info stream was
      present. This change makes it so that we include the object file name
      even if there is no module info stream for the module. As a result,
      running
      llvm-pdbdump pdb2yaml -dbi-module-info original.pdb > original.yaml &&
      llvm-pdbdump yaml2pdb -pdb=new.pdb original.yaml && llvm-pdbdump
      pdb2yaml -dbi-module-info new.pdb > new.yaml now produces identical
      original.yaml and new.yaml files.
      
      Reviewers: amccarth, zturner
      
      Reviewed By: zturner
      
      Subscribers: fhahn, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D33463
      
      llvm-svn: 303891
      ea91fafd
    • Daniel Berlin's avatar
      NewGVN: Fix PR 33119, PR 33129, due to regressed undef handling · e67c3222
      Daniel Berlin authored
      Fix PR33120 and others by eliminating self-cycles a different way.
      
      llvm-svn: 303875
      e67c3222
    • Artur Pilipenko's avatar
      [InstCombine] Teach isAllocSiteRemovable to look through addrspacecasts · 315eafc3
      Artur Pilipenko authored
      Reviewed By: reames
      
      Differential Revision: https://reviews.llvm.org/D28565
      
      llvm-svn: 303870
      315eafc3
    • Sanjay Patel's avatar
      [InstCombine] make icmp-mul fold more efficient · 51506120
      Sanjay Patel authored
      There's probably a lot more like this (see also comments in D33338 about responsibility), 
      but I suspect we don't usually get a visible manifestation.
      
      Given the recent interest in improving InstCombine efficiency, another potential micro-opt
      that could be repeated several times in this function: morph the existing icmp pred/operands
      instead of creating a new instruction.
      
      llvm-svn: 303860
      51506120
    • Tim Corringham's avatar
      [AMDGPU] add intrinsic for s_getpc · 32d0d386
      Tim Corringham authored
      Summary: The s_getpc instruction is exposed as intrinsic llvm.amdgcn.s.getpc.
      
      Reviewers: arsenm
      
      Reviewed By: arsenm
      
      Subscribers: kzhuravl, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye
      
      Differential Revision: https://reviews.llvm.org/D32862
      
      llvm-svn: 303859
      32d0d386
    • Oren Ben Simhon's avatar
      [X86] Adding vpopcntd and vpopcntq instructions · 7bf27f03
      Oren Ben Simhon authored
      AVX512_VPOPCNTDQ is a new feature set that was published by Intel.
      The patch represents the LLVM side of the addition of two new intrinsic based instructions (vpopcntd and vpopcntq).
      
      Differential Revision: https://reviews.llvm.org/D33169
      
      llvm-svn: 303858
      7bf27f03
    • James Molloy's avatar
      [GVNSink] Pacify MSVC · dc2d64bc
      James Molloy authored
      Don't convert an unsigned to a pointer for a sentinel, use a size_t instead.
      
      llvm-svn: 303855
      dc2d64bc
    • James Molloy's avatar
      [GVNSink] Don't define operator<< in NDEBUG · 2a237f19
      James Molloy authored
      Without debug macros enabled, the raw_ostream operator<< overload
      is unused.
      
      llvm-svn: 303852
      2a237f19
    • James Molloy's avatar
      [GVNSink] GVNSink pass · a9290632
      James Molloy authored
      This patch provides an initial prototype for a pass that sinks instructions based on GVN information, similar to GVNHoist. It is not yet ready for commiting but I've uploaded it to gather some initial thoughts.
      
      This pass attempts to sink instructions into successors, reducing static
      instruction count and enabling if-conversion.
      We use a variant of global value numbering to decide what can be sunk.
      Consider:
      
      [ %a1 = add i32 %b, 1  ]   [ %c1 = add i32 %d, 1  ]
      [ %a2 = xor i32 %a1, 1 ]   [ %c2 = xor i32 %c1, 1 ]
                       \           /
                 [ %e = phi i32 %a2, %c2 ]
                 [ add i32 %e, 4         ]
      
      GVN would number %a1 and %c1 differently because they compute different
      results - the VN of an instruction is a function of its opcode and the
      transitive closure of its operands. This is the key property for hoisting
      and CSE.
      
      What we want when sinking however is for a numbering that is a function of
      the *uses* of an instruction, which allows us to answer the question "if I
      replace %a1 with %c1, will it contribute in an equivalent way to all
      successive instructions?". The (new) PostValueTable class in GVN provides this
      mapping.
      
      This pass has some shown really impressive improvements especially for codesize already on internal benchmarks, so I have high hopes it can replace all the sinking logic in SimplifyCFG.
      
      Differential revision: https://reviews.llvm.org/D24805
      
      llvm-svn: 303850
      a9290632
    • Chandler Carruth's avatar
      [PM] Teach the PGO instrumentation pasess to run GlobalDCE before · f4d62c48
      Chandler Carruth authored
      instrumenting code.
      
      This is important in the new pass manager. The old pass manager's
      inliner has a small DCE routine embedded within it. The new pass manager
      relies on the actual GlobalDCE pass for this.
      
      Without this patch, instrumentation profiling with the new PM results in
      massive code bloat in the object files because the instrumentation
      itself ends up preventing DCE from working to remove the code.
      
      We should probably change the instrumentation (and/or DCE) so that we
      can eliminate dead code even if instrumented, but we shouldn't even
      spend the time generating instrumentation for that code so this still
      seems like a good patch.
      
      Differential Revision: https://reviews.llvm.org/D33535
      
      llvm-svn: 303845
      f4d62c48
    • Chandler Carruth's avatar
      [PM/Unswitch] Fix a bug in the domtree update logic for the new unswitch · dd2e275a
      Chandler Carruth authored
      pass.
      
      The original logic only considered direct successors of the hoisted
      domtree nodes, but that isn't really enough. If there are other basic
      blocks that are completely within the subtree, their successors could
      just as easily be impacted by the hoisting.
      
      The more I think about it, the more I think the correct update here is
      to hoist every block on the dominance frontier which has an idom in the
      chain we hoist across. However, this is subtle enough that I'd
      definitely appreciate some more eyes on it.
      
      Sadly, if this is the correct algorithm, it requires computing a (highly
      localized) dominance frontier. I've done this in the simplest (IE, least
      code) way I could come up with, but that may be too naive. Suggestions
      welcome here, dominance update algorithms are not an area I've studied
      much, so I don't have strong opinions.
      
      In good news, with this patch, turning on simple unswitch passes the
      LLVM test suite for me with asserts enabled.
      
      Differential Revision: https://reviews.llvm.org/D32740
      
      llvm-svn: 303843
      dd2e275a
    • Craig Topper's avatar
      [MVT] Fix the identation of the start of the MVT class. NFC · ae066a0d
      Craig Topper authored
      llvm-svn: 303841
      ae066a0d
    • Craig Topper's avatar
      [SelectionDAG] Fix off by one in a compare in getOperationAction. · 37e46bfb
      Craig Topper authored
      If Op is equal to array_lengthof, the lookup would be out of bounds, but we were only checking for greater than. I suspect nothing ever passes in the equal value because its a sentinel to mark the end of the builtin opcodes and not a real opcode.
      
      So really this fix is just so that the code looks right and makes sense.
      
      llvm-svn: 303840
      37e46bfb
    • Chandler Carruth's avatar
      [LegacyPM] Make the 'addLoop' method accept a loop to add rather than · 29c22d28
      Chandler Carruth authored
      having it internally allocate the loop.
      
      This is a much more flexible API and necessary in the new loop unswitch
      to reasonably support both new and old PMs in common code. It also just
      seems like a cleaner separation of concerns.
      
      NFC, this should just be a pure refactoring.
      
      Differential Revision: https://reviews.llvm.org/D33528
      
      llvm-svn: 303834
      29c22d28
    • Galina Kistanova's avatar
      Fixed nondeterminism in RuleMatcher::emit. · 1754fee8
      Galina Kistanova authored
      llvm-svn: 303829
      1754fee8
    • Vitaly Buka's avatar
      [libFuzzer] Don't replace custom signal handlers. · bf40f1b6
      Vitaly Buka authored
      Summary:
      This allows to keep handlers installed by sanitizers.
      In other cases third-party code can replace handlers after libFuzzer
      initialization anyway.
      
      Reviewers: kcc
      
      Subscribers: llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D33522
      
      llvm-svn: 303828
      bf40f1b6
    • George Karpenkov's avatar
      Fix coverage check for full post-dominator basic blocks. · a1c53278
      George Karpenkov authored
      Coverage instrumentation which does not instrument full post-dominators
      and full-dominators may skip valid paths, as the reasoning for skipping
      blocks may become circular.
      This patch fixes that, by only skipping
      full post-dominators with multiple predecessors, as such predecessors by
      definition can not be full-dominators.
      
      llvm-svn: 303827
      a1c53278
    • Gor Nishanov's avatar
      1fbc01f7
    • Gor Nishanov's avatar
      [coroutines] Relocate instructions that maybe spilled after coro.begin · 0ea1863b
      Gor Nishanov authored
      Summary:
      Frontend generates store instructions after allocas, for example:
      
      ```
      define i8* @f(i64 %this) "coroutine.presplit"="1" personality i32 0 {
      entry:
        %this.addr = alloca i64
        store i64 %this, i64* %this.addr
        ..
        %hdl = call i8* @llvm.coro.begin(token %id, i8* %alloc)
      
      ```
      Such instructions may require spilling into coro.frame, but, coro-frame address is only available after coro.begin and thus needs to be moved after coro.begin.
      The only instructions that should not be moved are the arguments of coro.begin and all of their operands.
      
      Reviewers: GorNishanov, majnemer
      
      Reviewed By: GorNishanov
      
      Subscribers: llvm-commits, EricWF
      
      Differential Revision: https://reviews.llvm.org/D33527
      
      llvm-svn: 303825
      0ea1863b
    • Tony Jiang's avatar
      [PowerPC] Fix a performance bug for PPC::XXSLDWI. · 0a429f04
      Tony Jiang authored
      There are some VectorShuffle Nodes in SDAG which can be selected to XXSLDWI
      instruction, this patch recognizes them and does the selection to improve the
      PPC performance.
      
      llvm-svn: 303822
      0a429f04
    • Rafael Espindola's avatar
      Print symbols from COFF import libraries. · 8b78185e
      Rafael Espindola authored
      This change allows llvm-nm to print symbols found in import libraries,
      in part by allowing COFFImportFiles to be casted to SymbolicFiles.
      
      Patch by Dave Lee!
      
      llvm-svn: 303821
      8b78185e
    • Eugene Zelenko's avatar
      [CodeGen] Fix some Clang-tidy modernize-use-using and Include What You Use... · 75480cce
      Eugene Zelenko authored
      [CodeGen] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC).
      
      llvm-svn: 303820
      75480cce
    • Gor Nishanov's avatar
      [coroutines] Allow rematerialization upto 4 times. Remove incorrect assert · 1f72d757
      Gor Nishanov authored
      Reviewers: majnemer
      
      Subscribers: EricWF, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D33524
      
      llvm-svn: 303819
      1f72d757
    • Sanjay Patel's avatar
      [InstCombine] use m_APInt to allow icmp-mul-mul vector fold · 07b1ba54
      Sanjay Patel authored
      The swapped operands in the first test is a manifestation of an 
      inefficiency for vectors that doesn't exist for scalars because 
      the IRBuilder checks for an all-ones mask for scalars, but not 
      vectors.
      
      llvm-svn: 303818
      07b1ba54
    • Sanjay Patel's avatar
      [InstCombine] add tests for icmp eq (mul X, C), (mul Y, C); NFC · a8ac360a
      Sanjay Patel authored
      llvm-svn: 303816
      a8ac360a
  2. May 24, 2017
Loading