Skip to content
  1. Dec 13, 2017
    • Michael Zolotukhin's avatar
      Remove redundant includes from lib/Transforms. · 6af4f232
      Michael Zolotukhin authored
      llvm-svn: 320628
      6af4f232
    • Brian M. Rzycki's avatar
      [JumpThreading] Preservation of DT and LVI across the pass · d989af98
      Brian M. Rzycki authored
      Summary:
      See D37528 for a previous (non-deferred) version of this
      patch and its description.
      
      Preserves dominance in a deferred manner using a new class
      DeferredDominance. This reduces the performance impact of
      updating the DominatorTree at every edge insertion and
      deletion. A user may call DDT->flush() within JumpThreading
      for an up-to-date DT. This patch currently has one flush()
      at the end of runImpl() to ensure DT is preserved across
      the pass.
      
      LVI is also preserved to help subsequent passes such as
      CorrelatedValuePropagation. LVI is simpler to maintain and
      is done immediately (not deferred). The code to perfom the
      preversation was minimally altered and was simply marked
      as preserved for the PassManager to be informed.
      
      This extends the analysis available to JumpThreading for
      future enhancements. One example is loop boundary threading.
      
      Reviewers: dberlin, kuhar, sebpop
      
      Reviewed By: kuhar, sebpop
      
      Subscribers: hiraditya, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D40146
      
      llvm-svn: 320612
      d989af98
    • Aditya Kumar's avatar
      [GVNHoist] Fix: PR35222 gvn-hoist incorrectly erases load · 49c03b11
      Aditya Kumar authored
      w.r.t. the paper
      "A Practical Improvement to the Partial Redundancy Elimination in SSA Form"
      (https://sites.google.com/site/jongsoopark/home/ssapre.pdf)
      
      Proper dominance check was missing here, so having a loopinfo should not be required.
      Committing this diff as this fixes the bug, if there are
      further concerns, I'll be happy to work on them.
      
      Differential Revision: https://reviews.llvm.org/D39781
      
      llvm-svn: 320607
      49c03b11
    • Igor Laevsky's avatar
      Reintroduce r320049, r320014 and r319894. · e0edb664
      Igor Laevsky authored
      OpenGL issues should be fixed by now.
      
      llvm-svn: 320568
      e0edb664
    • Mohammad Shahid's avatar
      [SLP] Vectorize jumbled memory loads. · dbd30edb
      Mohammad Shahid authored
      Summary:
      This patch tries to vectorize loads of consecutive memory accesses, accessed
      in non-consecutive or jumbled way. An earlier attempt was made with patch D26905
      which was reverted back due to some basic issue with representing the 'use mask' of
      jumbled accesses.
      
      This patch fixes the mask representation by recording the 'use mask' in the usertree entry.
      
      Change-Id: I9fe7f5045f065d84c126fa307ef6ebe0787296df
      
      Reviewers: mkuper, loladiro, Ayal, zvi, danielcdh
      
      Reviewed By: Ayal
      
      Subscribers: mgrang, dcaballe, hans, mzolotukhin
      
      Differential Revision: https://reviews.llvm.org/D36130
      
      llvm-svn: 320548
      dbd30edb
    • Florian Hahn's avatar
      [CallSiteSplitting] Refactor creating callsites. · beda7d51
      Florian Hahn authored
      Summary:
      This change makes the call site creation more general if any of the
      arguments is predicated on a condition in the call site's predecessors.
      
      If we find a callsite, that potentially can be split, we collect the set
      of conditions for the call site's predecessors (currently only 2
      predecessors are allowed). To do that, we traverse each predecessor's
      predecessors as long as it only has single predecessors and record the
      condition, if it is relevant to the call site. For each condition, we
      also check if the condition is taken or not. In case it is not taken,
      we record the inverse predicate.
      
      We use the recorded conditions to create the new call sites and split
      the basic block.
      
      This has 2 benefits: (1) it is slightly easier to see what is going on
      (IMO) and (2) we can easily extend it to handle more complex control
      flow.
      
      Reviewers: davidxl, junbuml
      
      Reviewed By: junbuml
      
      Subscribers: llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D40728
      
      llvm-svn: 320547
      beda7d51
    • Evgeniy Stepanov's avatar
      [hwasan] Inline instrumentation & fixed shadow. · ecb48e52
      Evgeniy Stepanov authored
      Summary: This brings CPU overhead on bzip2 down from 5.5x to 2x.
      
      Reviewers: kcc, alekseyshl
      
      Subscribers: kubamracek, hiraditya, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D41137
      
      llvm-svn: 320538
      ecb48e52
  2. Dec 12, 2017
  3. Dec 11, 2017
    • Matt Arsenault's avatar
      LSR: Check more intrinsic pointer operands · 3e268cc0
      Matt Arsenault authored
      llvm-svn: 320424
      3e268cc0
    • Hans Wennborg's avatar
      Revert r320407 "[InstCombine] Fix PR35618: Instcombine hangs on single minmax load bitcast." · 27d1c00c
      Hans Wennborg authored
      The tests fail (opt asserts) on Windows.
      
      > Summary:
      > If we have pattern `store (load(bitcast(select (cmp(V1, V2), &V1,
      > &V2)))), bitcast)`, but the load is used in other instructions, it leads
      > to looping in InstCombiner. Patch adds additional check that all users
      > of the load instructions are stores and then replaces all uses of load
      > instruction by the new one with new type.
      >
      > Reviewers: RKSimon, spatel, majnemer
      >
      > Subscribers: llvm-commits
      >
      > Differential Revision: https://reviews.llvm.org/D41072
      
      llvm-svn: 320421
      27d1c00c
    • Adrian Prantl's avatar
      ASAN: Provide reliable debug info for local variables at -O0. · 3c6c14d1
      Adrian Prantl authored
      The function stack poisioner conditionally stores local variables
      either in an alloca or in malloc'ated memory, which has the
      unfortunate side-effect, that the actual address of the variable is
      only materialized when the variable is accessed, which means that
      those variables are mostly invisible to the debugger even when
      compiling without optimizations.
      
      This patch stores the address of the local stack base into an alloca,
      which can be referred to by the debug info and is available throughout
      the function. This adds one extra pointer-sized alloca to each stack
      frame (but mem2reg can optimize it away again when optimizations are
      enabled, yielding roughly the same debug info quality as before in
      optimized code).
      
      rdar://problem/30433661
      
      Differential Revision: https://reviews.llvm.org/D41034
      
      llvm-svn: 320415
      3c6c14d1
    • Alexey Bataev's avatar
      [InstCombine] Fix PR35618: Instcombine hangs on single minmax load bitcast. · ec128ace
      Alexey Bataev authored
      Summary:
      If we have pattern `store (load(bitcast(select (cmp(V1, V2), &V1,
      &V2)))), bitcast)`, but the load is used in other instructions, it leads
      to looping in InstCombiner. Patch adds additional check that all users
      of the load instructions are stores and then replaces all uses of load
      instruction by the new one with new type.
      
      Reviewers: RKSimon, spatel, majnemer
      
      Subscribers: llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D41072
      
      llvm-svn: 320407
      ec128ace
    • Alexander Potapenko's avatar
      [MSan] Hotfix compilation · 3c934e48
      Alexander Potapenko authored
      For some reason the override directives got removed in r320373.
      I suspect this to be an unwanted effect of clang-format.
      
      llvm-svn: 320381
      3c934e48
    • Alexander Potapenko's avatar
      [MSan] introduce getShadowOriginPtr(). NFC. · c07e6a0e
      Alexander Potapenko authored
      This patch introduces getShadowOriginPtr(), a method that obtains both the shadow and origin pointers for an address as a Value pair.
      The existing callers of getShadowPtr() and getOriginPtr() are updated to use getShadowOriginPtr().
      
      The rationale for this change is to simplify KMSAN instrumentation implementation.
      In KMSAN origins tracking is always enabled, and there's no direct mapping between the app memory and the shadow/origin pages.
      Both the shadow and the origin pointer for a given address are obtained by calling a single runtime hook from the instrumentation,
      therefore it's easier to work with those pointers together.
      
      Reviewed at https://reviews.llvm.org/D40835.
      
      llvm-svn: 320373
      c07e6a0e
  4. Dec 10, 2017
  5. Dec 09, 2017
  6. Dec 08, 2017
Loading