1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 11:13:28 +01:00
llvm-mirror/unittests
Sanjoy Das 7341e7e3ca [SCEV] Maintain and use a loop->loop invalidation dependency
Summary:
This change uses the loop use list added in the previous change to remember the
loops that appear in the trip count expressions of other loops; and uses it in
forgetLoop.  This lets us not scan every loop in the function on a forgetLoop
call.

With this change we no longer invalidate clear out backedge taken counts on
forgetValue.  I think this is fine -- the contract is that SCEV users must call
forgetLoop(L) if their change to the IR could have changed the trip count of L;
solely calling forgetValue on a value feeding into the backedge condition of L
is not enough.  Moreover, I don't think we can strengthen forgetValue to be
sufficient for invalidating trip counts without significantly re-architecting
SCEV.  For instance, if we have the loop:

  I = *Ptr;
  E = I + 10;
  do {
    // ...
  } while (++I != E);

then the backedge taken count of the loop is 9, and it has no reference to
either I or E, i.e. there is no way in SCEV today to re-discover the dependency
of the loop's trip count on E or I.  So a SCEV client cannot change E to (say)
"I + 20", call forgetValue(E) and expect the loop's trip count to be updated.

Reviewers: atrick, sunfish, mkazantsev

Subscribers: mcrosier, llvm-commits

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

llvm-svn: 315713
2017-10-13 17:13:44 +00:00
..
ADT Revert "[ADT] Make Twine's copy constructor private." 2017-10-11 23:54:34 +00:00
Analysis [SCEV] Maintain and use a loop->loop invalidation dependency 2017-10-13 17:13:44 +00:00
AsmParser
BinaryFormat [BinaryFormat] Fix out of bounds read. 2017-08-31 12:50:42 +00:00
Bitcode
CodeGen Revert "TargetMachine: Merge TargetMachine and LLVMTargetMachine" 2017-10-12 22:57:28 +00:00
DebugInfo [MC] Have MCObjectStreamer take its MCAsmBackend argument via unique_ptr. 2017-10-11 23:34:47 +00:00
ExecutionEngine [ORC] Replace decltype with a concrete type to make MSVC happy. 2017-09-29 05:03:43 +00:00
FuzzMutate Re-apply "Introduce FuzzMutate library" 2017-08-21 22:57:06 +00:00
IR Move the stripping of invalid debug info from the Verifier to AutoUpgrade. 2017-10-02 18:31:29 +00:00
LineEditor
Linker Fix build for LLVM unittests 2017-09-15 21:12:13 +00:00
MC
MI Delete Default and JITDefault code models 2017-08-03 02:16:21 +00:00
Object
ObjectYAML
Option
ProfileData CoverageMappingTest.cpp: Suppress warnings. [-Wdocumentation] 2017-09-09 06:19:53 +00:00
Support Add DK_Remark to SMDiagnostic 2017-10-12 23:56:02 +00:00
Target Reapply "[GlobalISel] Remove the GISelAccessor API." 2017-08-15 22:31:51 +00:00
tools [cfi-verify] Fix typo, actually check X86 target 2017-10-12 14:42:26 +00:00
Transforms [CodeExtractor] Fix multiple bugs under certain shape of extracted region 2017-10-06 03:37:06 +00:00
XRay
CMakeLists.txt Reland 'Classify llvm-cfi-verify.' 2017-10-11 20:35:01 +00:00