[all-commits] [llvm/llvm-project] 5ce47a: Reland "[Support] Assert that DomTree nodes share ...

Vitaly Buka via All-commits all-commits at lists.llvm.org
Tue Aug 13 02:56:23 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 5ce47a5813506e08daddc1e3d59b06f7a452c300
      https://github.com/llvm/llvm-project/commit/5ce47a5813506e08daddc1e3d59b06f7a452c300
  Author: Vitaly Buka <vitalybuka at google.com>
  Date:   2024-08-13 (Tue, 13 Aug 2024)

  Changed paths:
    M llvm/include/llvm/Support/GenericDomTree.h
    M llvm/lib/Analysis/TypeMetadataUtils.cpp
    M llvm/lib/Transforms/Scalar/AlignmentFromAssumptions.cpp
    M llvm/lib/Transforms/Scalar/LoopFuse.cpp
    M llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
    A llvm/test/Transforms/AlignmentFromAssumptions/domtree-crash.ll
    A llvm/test/Transforms/SLPVectorizer/X86/const-in-different-functions.ll

  Log Message:
  -----------
  Reland "[Support] Assert that DomTree nodes share parent" (#102782)

A dominance query of a block that is in a different function is
ill-defined, so assert that getNode() is only called for blocks that are
in the same function.

There are three cases, where this behavior did occur. LoopFuse didn't
explicitly do this, but didn't invalidate the SCEV block dispositions,
leaving dangling pointers to free'ed basic blocks behind, causing
use-after-free. We do, however, want to be able to dereference basic
blocks inside the dominator tree, so that we can refer to them by a
number stored inside the basic block.

Reverts #102780
Reland #101198
Fixes #102784

Co-authored-by: Alexis Engelke <engelke at in.tum.de>



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list