1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-21 03:53:04 +02:00
llvm-mirror/include/llvm/Transforms
Wei Mi 6fec4b3a5f [GVN] Add phi-translate support in scalarpre.
Right now scalarpre doesn't have phi-translate support, so it will miss some
simple pre opportunities. Like the following testcase, current scalarpre cannot
recognize the last "a * b" is fully redundent because a and b used by the last
"a * b" expr are both defined by phis.

  long a[100], b[100], g1, g2, g3;
  __attribute__((pure)) long goo();

  void foo(long a, long b, long c, long d) {
    g1 = a * b;
    if (__builtin_expect(g2 > 3, 0)) {
      a = c;
      b = d;
      g2 = a * b;
    }
    g3 = a * b;      // fully redundant.
  }

The patch adds phi-translate support in scalarpre. This is only a temporary
solution before the newpre based on newgvn is available.

Differential Revision: https://reviews.llvm.org/D32252

llvm-svn: 303923
2017-05-25 21:49:02 +00:00
..
InstCombine Do a sweep over move ctors and remove those that are identical to the default. 2016-10-20 12:20:28 +00:00
IPO Revert "Revert "ThinLTO: Verify bitcode before lauching the ThinLTOCodeGenerator."" 2017-05-20 00:00:08 +00:00
Scalar [GVN] Add phi-translate support in scalarpre. 2017-05-25 21:49:02 +00:00
Utils [GVNSink] GVNSink pass 2017-05-25 12:51:11 +00:00
Vectorize [SLP] Emit optimization remarks 2017-05-11 17:06:17 +00:00
Coroutines.h [coroutines] Part 3 of N: Adding Boilerplate for Coroutine Passes 2016-07-28 21:04:31 +00:00
GCOVProfiler.h Consistently use ModuleAnalysisManager 2016-08-09 00:28:38 +00:00
InstrProfiling.h [ProfileData] Unify getInstrProf*SectionName helpers 2017-04-15 00:09:57 +00:00
Instrumentation.h [sanitizer-coverage] implement -fsanitize-coverage=no-prune,... instead of a hidden -mllvm flag. llvm part. 2017-05-05 23:14:40 +00:00
IPO.h [ThinLTO] Add support for emitting minimized bitcode for thin link 2017-03-23 19:47:39 +00:00
ObjCARC.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
PGOInstrumentation.h [PGO] Memory intrinsic calls optimization based on profiled size 2017-04-04 16:42:20 +00:00
SampleProfile.h Consistently use ModuleAnalysisManager 2016-08-09 00:28:38 +00:00
Scalar.h [GVNSink] GVNSink pass 2017-05-25 12:51:11 +00:00
Vectorize.h LoadStoreVectorizer: Check TTI for vec reg bit width 2016-07-01 02:07:22 +00:00