Skip to content
  1. Aug 03, 2016
  2. Aug 02, 2016
  3. Aug 01, 2016
  4. Jul 31, 2016
  5. Jul 29, 2016
    • Adam Nemet's avatar
      [LoopUnroll] Include hotness of region in opt remark · 12937c36
      Adam Nemet authored
      LoopUnroll is a loop pass, so the analysis of OptimizationRemarkEmitter
      is added to the common function analysis passes that loop passes
      depend on.
      
      The BFI and indirectly BPI used in this pass is computed lazily so no
      overhead should be observed unless -pass-remarks-with-hotness is used.
      
      This is how the patch affects the O3 pipeline:
      
               Dominator Tree Construction
               Natural Loop Information
               Canonicalize natural loops
               Loop-Closed SSA Form Pass
               Basic Alias Analysis (stateless AA impl)
               Function Alias Analysis Results
               Scalar Evolution Analysis
      +        Lazy Branch Probability Analysis
      +        Lazy Block Frequency Analysis
      +        Optimization Remark Emitter
               Loop Pass Manager
                 Rotate Loops
                 Loop Invariant Code Motion
                 Unswitch loops
               Simplify the CFG
               Dominator Tree Construction
               Basic Alias Analysis (stateless AA impl)
               Function Alias Analysis Results
               Combine redundant instructions
               Natural Loop Information
               Canonicalize natural loops
               Loop-Closed SSA Form Pass
               Scalar Evolution Analysis
      +        Lazy Branch Probability Analysis
      +        Lazy Block Frequency Analysis
      +        Optimization Remark Emitter
               Loop Pass Manager
                 Induction Variable Simplification
                 Recognize loop idioms
                 Delete dead loops
                 Unroll loops
      ...
      
      llvm-svn: 277203
      12937c36
    • Andrew Kaylor's avatar
      Recommitting r275284: add support to inline __builtin_mempcpy · b99d1cc7
      Andrew Kaylor authored
      Patch by Sunita Marathe
      
      Third try, now following fixes to MSan to handle mempcy in such a way that this commit won't break the MSan buildbots. (Thanks, Evegenii!)
      
      llvm-svn: 277189
      b99d1cc7
    • David Majnemer's avatar
      [EarlyCSE] Correctly handle simplified, but live, instructions · 130b9f99
      David Majnemer authored
      Some instructions may have their uses replaced with a symbolic constant.
      However, the instruction may still have side effects which percludes it
      from being removed from the function.  EarlyCSE treated such an
      instruction as if it were removed, resulting in PR28763.
      
      llvm-svn: 277114
      130b9f99
    • David Majnemer's avatar
      [ConstnatFolding] Teach the folder how to fold ConstantVector · d536f232
      David Majnemer authored
      A ConstantVector can have ConstantExpr operands and vice versa.
      However, the folder had no ability to fold ConstantVectors which, in
      some cases, was an optimization barrier.
      
      Instead, rephrase the folder in terms of Constants instead of
      ConstantExprs and teach callers how to deal with failure.
      
      llvm-svn: 277099
      d536f232
    • Piotr Padlewski's avatar
      Added ThinLTO inlining statistics · 84abc74f
      Piotr Padlewski authored
      Summary:
      copypasta doc of ImportedFunctionsInliningStatistics class
       \brief Calculate and dump ThinLTO specific inliner stats.
       The main statistics are:
       (1) Number of inlined imported functions,
       (2) Number of imported functions inlined into importing module (indirect),
       (3) Number of non imported functions inlined into importing module
       (indirect).
       The difference between first and the second is that first stat counts
       all performed inlines on imported functions, but the second one only the
       functions that have been eventually inlined to a function in the importing
       module (by a chain of inlines). Because llvm uses bottom-up inliner, it is
       possible to e.g. import function `A`, `B` and then inline `B` to `A`,
       and after this `A` might be too big to be inlined into some other function
       that calls it. It calculates this statistic by building graph, where
       the nodes are functions, and edges are performed inlines and then by marking
       the edges starting from not imported function.
      
       If `Verbose` is set to true, then it also dumps statistics
       per each inlined function, sorted by the greatest inlines count like
       - number of performed inlines
       - number of performed inlines to importing module
      
      Reviewers: eraman, tejohnson, mehdi_amini
      
      Subscribers: mehdi_amini, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D22491
      
      llvm-svn: 277089
      84abc74f
    • Evgeniy Stepanov's avatar
      [sanitizer] Simplify and future-proof maybeMarkSanitizerLibraryCallNoBuiltin(). · d240a889
      Evgeniy Stepanov authored
      Sanitizers set nobuiltin attribute on certain library functions to
      avoid a situation where such function is neither instrumented nor
      intercepted.
      
      At the moment the list of interesting functions is hardcoded. This
      change replaces it with logic based on
      TargetLibraryInfo::hasOptimizedCodegen and the presense of readnone
      function attribute (sanitizers are generally interested in memory
      behavior of library functions).
      
      This is expected to be a no-op change: the new logic matches exactly
      the same set of functions.
      
      r276771 (currently reverted) added mempcpy() to the list, breaking
      MSan tests. With this change, r276771 can be safely re-landed.
      
      llvm-svn: 277086
      d240a889
    • Vitaly Buka's avatar
      Do not remove empty lifetime.start/lifetime.end ranges · 0ab23cf1
      Vitaly Buka authored
      Summary:
      Asan stack-use-after-scope check should poison alloca even if there is
      no access between start and end.
      
      This is possible for code like this:
      for (int i = 0; i < 3; i++) {
        int x;
        p = &x;
      }
      
      "Loop Invariant Code Motion" will move "p = &x;" out of the loop, making
      start/end range empty.
      
      PR27453
      
      Reviewers: eugenis
      
      Differential Revision: https://reviews.llvm.org/D22842
      
      llvm-svn: 277072
      0ab23cf1
    • Vitaly Buka's avatar
      Should be committed as one CL. · 2fae6a77
      Vitaly Buka authored
      This reverts commits r277068 r277067 r277066.
      
      llvm-svn: 277071
      2fae6a77
    • Vitaly Buka's avatar
      [asan] Add const into few methods · 21a9e573
      Vitaly Buka authored
      Summary: No functional changes
      
      Reviewers: eugenis
      
      Subscribers: llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D22899
      
      llvm-svn: 277069
      21a9e573
    • Vitaly Buka's avatar
      Do not remove empty lifetime.start/lifetime.end ranges · f0500b6a
      Vitaly Buka authored
      Summary:
      Asan stack-use-after-scope check should poison alloca even if there is
      no access between start and end.
      
      This is possible for code like this:
      for (int i = 0; i < 3; i++) {
        int x;
        p = &x;
      }
      
      "Loop Invariant Code Motion" will move "p = &x;" out of the loop, making
      start/end range empty.
      
      PR27453
      
      Reviewers: eugenis
      
      Differential Revision: https://reviews.llvm.org/D22842
      
      llvm-svn: 277068
      f0500b6a
Loading