diff options
author | Florian Hahn <florian_hahn@apple.com> | 2020-01-27 15:11:45 -0800 |
---|---|---|
committer | Hans Wennborg <hans@chromium.org> | 2020-02-10 14:28:36 +0100 |
commit | b8fead783fa19d48a2e2c3162fba5271360f57b5 (patch) | |
tree | 9e17c8a17f328b666936413a22f793ffe9ca6566 /llvm/lib/Target/AArch64 | |
parent | b73942dbc144c11dc94fd32a7d8025a22e7e1d6b (diff) | |
download | bcm5719-llvm-b8fead783fa19d48a2e2c3162fba5271360f57b5.tar.gz bcm5719-llvm-b8fead783fa19d48a2e2c3162fba5271360f57b5.zip |
[AArch64] Add option to enable/disable load-store renaming.
This patch adds a new option to enable/disable register renaming in the
load-store optimizer. Defaults to disabled, as there is a potential
mis-compile caused by this.
(cherry picked from commit 8e3f59b45ae185cc9b4e3a817d7ac958f1d55976)
Diffstat (limited to 'llvm/lib/Target/AArch64')
-rw-r--r-- | llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp b/llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp index bc91d628f0b..cbca29b63b7 100644 --- a/llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp +++ b/llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp @@ -66,6 +66,10 @@ static cl::opt<unsigned> LdStLimit("aarch64-load-store-scan-limit", static cl::opt<unsigned> UpdateLimit("aarch64-update-scan-limit", cl::init(100), cl::Hidden); +// Enable register renaming to find additional store pairing opportunities. +static cl::opt<bool> EnableRenaming("aarch64-load-store-renaming", + cl::init(false), cl::Hidden); + #define AARCH64_LOAD_STORE_OPT_NAME "AArch64 load / store optimization pass" namespace { @@ -1446,6 +1450,9 @@ AArch64LoadStoreOpt::findMatchingInsn(MachineBasicBlock::iterator I, bool IsPromotableZeroStore = isPromotableZeroStoreInst(FirstMI); Optional<bool> MaybeCanRename = None; + if (!EnableRenaming) + MaybeCanRename = {false}; + SmallPtrSet<const TargetRegisterClass *, 5> RequiredClasses; LiveRegUnits UsedInBetween; UsedInBetween.init(*TRI); |