[PATCH] D132657: [DSE] Eliminate noop store even through has clobbering between LoadI and StoreI

Eli Friedman via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Sep 2 14:24:52 PDT 2022


efriedma added a comment.

gcc is doing something with alignment.  In the following, foo() is optimized, foo2() is not.

  struct A { int x; };
  struct __attribute((packed)) A2 { int x; };
  void foo(char *a) {
      struct A c = *((struct A *)a);
      *((struct A *)(a + 1)) = c;
      *((struct A *)a) = c;
  }
  void foo2(char *a) {
      struct A2 c = *((struct A2 *)a);
      *((struct A2 *)(a + 1)) = c;
      *((struct A2 *)a) = c;
  }

I'm not sure if gcc honors the alignment attribute in `(int __attribute__((aligned (1))) *)a`.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D132657/new/

https://reviews.llvm.org/D132657



More information about the llvm-commits mailing list