[PATCH] D153638: [CodeGenPrepare][NFC] Update the dominator tree instead of rebuilding it

Jordan Rupprecht via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Aug 1 23:06:48 PDT 2023


rupprecht added a comment.

Reduced:

  struct a {
    a(decltype(nullptr));
    long b;
  } *c;
  enum { d };
  struct t {
    _Atomic(a) e;
  };
  struct f : t {};
  struct atomic {
    f g;
    void h() {
      f *j = &g;
      t *k = j;
      __c11_atomic_load(&k->e, d);
    }
  };
  a l(a *addr) {
    reinterpret_cast<atomic *>(addr)->h();
    return 0;
  }
  struct {
    void m(long v) {
      long w = sizeof(this);
      c = reinterpret_cast<a *>(w);
      a *o = c;
      l(&o[v]);
    }
  } p;
  a q();
  long r;
  bool u();
  a s() {
    if (u()) return q();
    for (long i = r; i; i++) p.m(i);
    return nullptr;
  }

Compiled w/ `bin/clang -c /tmp/repro.cc -O2 -std=c++17`

  1.      <eof> parser at end of file
  2.      Code generation
  3.      Running pass 'Function Pass Manager' on module '/tmp/repro.cc'.
  4.      Running pass 'CodeGen Prepare' on function '@_Z1sv'
  ...
   #5 0x00005632704fe3b9 llvm::ilist_node_base<true>::isSentinel() const /home/rupprecht/src/llvm-project/llvm/include/llvm/ADT/ilist_node_base.h:45:36
   #6 0x00005632704fe3b9 llvm::ilist_node_base<true>::isKnownSentinel() const /home/rupprecht/src/llvm-project/llvm/include/llvm/ADT/ilist_node_base.h:46:41
   #7 0x00005632704fe3b9 llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::BasicBlock, true, false, void>, false, false>::operator*() const /home/rupprecht/src/llvm-project/llvm/include/llvm/ADT/ilist_iterator.h:138:5
   #8 0x00005632704fe3b9 llvm::early_inc_iterator_impl<llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::BasicBlock, true, false, void>, false, false>>::operator*() /home/rupprecht/src/llvm-project/llvm/include/llvm/ADT/STLExtras.h:631:12
   #9 0x00005632704fe3b9 (anonymous namespace)::CodeGenPrepare::runOnFunction(llvm::Function&) /home/rupprecht/src/llvm-project/llvm/lib/CodeGen/CodeGenPrepare.cpp:622:25
  #10 0x0000563270a9d9ac llvm::FPPassManager::runOnFunction(llvm::Function&) /home/rupprecht/src/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:0:27
  #11 0x0000563270aa3d61 llvm::FPPassManager::runOnModule(llvm::Module&) /home/rupprecht/src/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1481:13
  #12 0x0000563270a9e008 (anonymous namespace)::MPPassManager::runOnModule(llvm::Module&) /home/rupprecht/src/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:0:27


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D153638



More information about the llvm-commits mailing list