1. Sep 30, 2022
  2. Sep 29, 2022
    • luxufan's avatar
      [DSE] Eliminate noop store even through has clobbering between LoadI and StoreI · f079ba76
      luxufan authored
      For noop store of the form of LoadI and StoreI,
      An invariant should be kept is that the memory state of the related
      MemoryLoc before LoadI is the same as before StoreI.
      For this example:
      ```
      define void @pr49927(i32* %q, i32* %p) {
        %v = load i32, i32* %p, align 4
        store i32 %v, i32* %q, align 4
        store i32 %v, i32* %p, align 4
        ret void
      }
      ```
      Here the definition of the store's destination is different with the
      definition of the load's destination, which it seems that the
      invariant mentioned above is broken. But the definition of the
      store's destination would write a value that is LoadI, actually, the
      invariant is still kept. So we can safely ignore it.
      
      Fixes https://github.com/llvm/llvm-project/issues/49271
      
      Reviewed By: nikic
      
      Differential Revision: https://reviews.llvm.org/D132657
      f079ba76
  3. Sep 30, 2022
  4. Sep 29, 2022