[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