[PATCH] D86906: [AArch64LdStOptimzation] fix a bug in AArch64 Load Store Optimization
Florian Hahn via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 16 06:24:08 PDT 2020
fhahn added inline comments.
================
Comment at: llvm/test/CodeGen/AArch64/aarch64-ldst-subsuperReg-no-ldp.mir:30
+
+ @m = common dso_local local_unnamed_addr global %struct.a zeroinitializer, align 1
+ @n = common dso_local local_unnamed_addr global i32 0, align 4
----------------
congzhe wrote:
> fhahn wrote:
> > Is it possible to strip the IR references from the MIR test? Ideally most/all of the IR function here can be dropped.
> I spent effort trying to drop out the IR, but since some global variables such as `@_MergedGlobals` or `@i` are used in the mir, if I were to drop the IR `llc` would report undefined global variables error. Is there a way that I can drop the IR while still being able to run the mir? @fhahn
I think it should be possible to get rid of the IR references by re-writing the address computations to use the same base register but with different offsets to ensure it is clear there is no aliasing going on. Reduced test case:
```
---
name: test
tracksRegLiveness: true
body: |
bb.0:
liveins: $x9, $x11
renamable $w10 = LDRWui renamable $x9, 2 :: (load 4)
STRWui killed renamable $w10, renamable $x9, 2 :: (store 4)
renamable $x10 = LDRSWui renamable $x9, 3 :: (load 4)
STRWui renamable $w11, renamable $x9, 8 :: (store 4)
renamable $w10 = LDRWui renamable $x9, 2 :: (load 4)
RET undef $lr, implicit undef $w0
...
```
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D86906/new/
https://reviews.llvm.org/D86906
More information about the llvm-commits
mailing list