1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 03:33:20 +01:00
llvm-mirror/lib
Eli Friedman a67cf70e74 [LICM] Make isGuaranteedToExecute more accurate.
Summary:
Make isGuaranteedToExecute use the
isGuaranteedToTransferExecutionToSuccessor helper, and make that helper
a bit more accurate.

There's a potential performance impact here from assuming that arbitrary
calls might not return. This probably has little impact on loads and
stores to a pointer because most things alias analysis can reason about
are dereferenceable anyway. The other impacts, like less aggressive
hoisting of sdiv by a variable and less aggressive hoisting around
volatile memory operations, are unlikely to matter for real code.

This also impacts SCEV, which uses the same helper.  It's a minor
improvement there because we can tell that, for example, memcpy always
returns normally. Strictly speaking, it's also introducing
a bug, but it's not any worse than everywhere else we assume readonly
functions terminate.

Fixes http://llvm.org/PR27857.

Reviewers: hfinkel, reames, chandlerc, sanjoy

Subscribers: broune, llvm-commits

Differential Revision: http://reviews.llvm.org/D21167

llvm-svn: 272489
2016-06-11 21:48:25 +00:00
..
Analysis [LICM] Make isGuaranteedToExecute more accurate. 2016-06-11 21:48:25 +00:00
AsmParser
Bitcode
CodeGen [MBP] Code cleanup /NFC 2016-06-11 18:35:40 +00:00
DebugInfo
ExecutionEngine
Fuzzer
IR
IRReader
LibDriver
LineEditor
Linker
LTO
MC
Object
ObjectYAML
Option
Passes
ProfileData
Support
TableGen
Target [CostModel][X86][SSE] Updated costs for vector BITREVERSE ops on SSSE3+ targets 2016-06-11 19:23:02 +00:00
Transforms [LICM] Make isGuaranteedToExecute more accurate. 2016-06-11 21:48:25 +00:00
CMakeLists.txt
LLVMBuild.txt