llvm-project/llvm/test
Juneyoung Lee d9a4a24413 Add CanonicalizeFreezeInLoops pass
Summary:
If an induction variable is frozen and used, SCEV yields imprecise result
because it doesn't say anything about frozen variables.

Due to this reason, performance degradation happened after
https://reviews.llvm.org/D76483 is merged, causing
SCEV yield imprecise result and preventing LSR to optimize a loop.

The suggested solution here is to add a pass which canonicalizes frozen variables
inside a loop. To be specific, it pushes freezes out of the loop by freezing
the initial value and step values instead & dropping nsw/nuw flags from instructions used by freeze.
This solution was also mentioned at https://reviews.llvm.org/D70623 .

Reviewers: spatel, efriedma, lebedev.ri, fhahn, jdoerfert

Reviewed By: fhahn

Subscribers: nikic, mgorny, hiraditya, javed.absar, llvm-commits, sanwou01, nlopes

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D77523
2020-05-21 09:29:29 +09:00
..
Analysis Make Value::getPointerAlignment() return an Align, not a MaybeAlign. 2020-05-20 16:37:20 -07:00
Assembler AllocaInst should store Align instead of MaybeAlign. 2020-05-16 14:53:16 -07:00
Bindings
Bitcode StoreInst should store Align, not MaybeAlign 2020-05-15 12:26:58 -07:00
BugPoint
CodeGen [AArch64] Fix unwind info generated by outliner. 2020-05-20 16:39:00 -07:00
DebugInfo [DebugInfo] Add a test for dumping DWARF64 CIEs and FDEs (8/8). 2020-05-19 13:36:07 +07:00
Demangle Give microsoftDemangle() an outparam for how many input bytes were consumed. 2020-05-20 16:17:31 -04:00
Examples
ExecutionEngine
Feature StoreInst should store Align, not MaybeAlign 2020-05-15 12:26:58 -07:00
FileCheck [test] Improve FileCheck's numeric-expression.txt 2020-05-16 00:09:24 +01:00
Instrumentation StoreInst should store Align, not MaybeAlign 2020-05-15 12:26:58 -07:00
Integer
JitListener
LTO Infer alignment of unmarked loads in IR/bitcode parsing. 2020-05-14 13:03:50 -07:00
Linker
MC [Hexagon] pX.new cannot be used with p3:0 as producer 2020-05-19 17:06:34 -05:00
MachineVerifier
Object [yaml2obj] - Stop using square brackets for unique suffixes. 2020-05-19 12:59:13 +03:00
ObjectYAML [ObjectYAML][MachO] Add support for relocations 2020-04-22 11:50:55 -07:00
Other [llvm] Add interface to drive inlining decision using ML model 2020-05-13 13:27:29 -07:00
Reduce
SafepointIRVerifier
Support
SymbolRewriter
TableGen [TableGen] Fix register class handling in TableGen's DAG ISel Matcher Generator 2020-05-13 10:17:03 +01:00
ThinLTO/X86 [LTO] Suppress emission of empty combined module by default 2020-05-04 18:31:09 -07:00
Transforms Add CanonicalizeFreezeInLoops pass 2020-05-21 09:29:29 +09:00
Unit
Verifier Add verifier check that musttail and preallocated are not used together 2020-05-18 11:24:59 -07:00
YAMLParser
tools [yaml2obj] - Implement the "Offset" property for the Fill Chunk. 2020-05-20 13:38:48 +03:00
.clang-format
CMakeLists.txt [examples] Skip building the Bye pass plugin on windows 2020-05-13 13:40:56 +03:00
TestRunner.sh
lit.cfg.py
lit.site.cfg.py.in Revert "Temporarily revert "build: use `find_package(Python3)` if available"" 2020-04-29 01:38:08 +00:00