1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 03:33:20 +01:00
llvm-mirror/include/llvm/Transforms
Max Kazantsev f15980df02 [GVN] Prevent LoadPRE from hoisting across instructions that don't pass control flow to successors
This patch fixes the miscompile that happens when PRE hoists loads across guards and
other instructions that don't always pass control flow to their successors. PRE is now prohibited
to hoist across such instructions because there is no guarantee that the load standing after such
instruction is still valid before such instruction. For example, a load from under a guard may be
invalid before the guard in the following case:
  int array[LEN];
  ...
  guard(0 <= index && index < LEN);
  use(array[index]);

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

llvm-svn: 315440
2017-10-11 08:10:43 +00:00
..
InstCombine
IPO [Transforms] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-10-10 22:49:55 +00:00
Scalar [GVN] Prevent LoadPRE from hoisting across instructions that don't pass control flow to successors 2017-10-11 08:10:43 +00:00
Utils ModuleUtils: Stop using comdat members to generate unique module ids. 2017-10-05 21:54:53 +00:00
Vectorize Rename OptimizationDiagnosticInfo.* to OptimizationRemarkEmitter.* 2017-10-09 23:19:02 +00:00
Coroutines.h
GCOVProfiler.h
InstrProfiling.h [PGO] Implementate profile counter regiser promotion 2017-06-25 00:26:43 +00:00
Instrumentation.h [SanitizerCoverage] Add stack depth tracing instrumentation. 2017-08-18 18:43:30 +00:00
IPO.h
ObjCARC.h
PGOInstrumentation.h
SampleProfile.h Separate the logic when handling indirect calls in SamplePGO ThinLTO compile phase and other phases. 2017-10-01 05:24:51 +00:00
Scalar.h [DivRempairs] add a pass to optimize div/rem pairs (PR31028) 2017-09-09 13:38:18 +00:00
Vectorize.h Remove the BBVectorize pass. 2017-06-30 07:09:08 +00:00