[all-commits] [llvm/llvm-project] ad532b: [SelectionDAG] Assert that operands to SelectionDA...

Craig Topper via All-commits all-commits at lists.llvm.org
Thu Mar 4 23:17:24 PST 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: ad532be01251c3593616d7ede29bc43a87e30726
      https://github.com/llvm/llvm-project/commit/ad532be01251c3593616d7ede29bc43a87e30726
  Author: Craig Topper <craig.topper at sifive.com>
  Date:   2021-03-04 (Thu, 04 Mar 2021)

  Changed paths:
    M llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp

  Log Message:
  -----------
  [SelectionDAG] Assert that operands to SelectionDAG::getNode are not DELETED_NODE to catch issues like PR49393 earlier.

I'm not sure this would catch all such issues, but it would catch some.

The problem for PR49393 was that we were holding a reference to a node that
wasn't connect edto the DAG across a function that could delete unused nodes. In
this particular case we managed to try to use the deleted node while it was in
the deleted state before its memory got recycled.

It could also happen that we delete the node, something allocates a new node
which recycles the memory. Then  we try to use the reference we were holding and
it is now a completely different node with different valid opcode. This patch
would not catch that.

Reviewed By: spatel

Differential Revision: https://reviews.llvm.org/D97969




More information about the All-commits mailing list