mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 10:42:39 +01:00
[LICM] Avoid repeating expensive call while promoting loads. NFC
Summary: We can avoid repeating the check `isGuaranteedToExecute` when it's already called once while checking if the alignment can be widened for the load/store being hoisted. The function is invariant for the same instruction `UI` in `isGuaranteedToExecute(*UI, DT, CurLoop, SafetyInfo);` Reviewers: hfinkel, eli.friedman Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D21672 llvm-svn: 273671
This commit is contained in:
parent
3ebfae60c5
commit
e1435a41d8
@ -945,15 +945,16 @@ bool llvm::promoteLoopAccessesToScalars(
|
||||
// instruction will be executed, update the alignment.
|
||||
// Larger is better, with the exception of 0 being the best alignment.
|
||||
unsigned InstAlignment = Store->getAlignment();
|
||||
if ((InstAlignment > Alignment || InstAlignment == 0) && Alignment != 0)
|
||||
if ((InstAlignment > Alignment || InstAlignment == 0) &&
|
||||
Alignment != 0) {
|
||||
if (isGuaranteedToExecute(*UI, DT, CurLoop, SafetyInfo)) {
|
||||
GuaranteedToExecute = true;
|
||||
Alignment = InstAlignment;
|
||||
}
|
||||
|
||||
if (!GuaranteedToExecute)
|
||||
} else if (!GuaranteedToExecute) {
|
||||
GuaranteedToExecute =
|
||||
isGuaranteedToExecute(*UI, DT, CurLoop, SafetyInfo);
|
||||
}
|
||||
|
||||
if (!GuaranteedToExecute && !CanSpeculateLoad) {
|
||||
CanSpeculateLoad = isDereferenceableAndAlignedPointer(
|
||||
|
Loading…
Reference in New Issue
Block a user