[llvm] Reland "[Support] Assert that DomTree nodes share parent"" (PR #102782)

Paul Kirth via llvm-commits llvm-commits at lists.llvm.org
Tue Aug 13 08:01:38 PDT 2024


ilovepi wrote:

Hi, I think we're seeing an assertion failure in two-stage builds after this patch. I'm still bisecting to be sure, but given the assertion we're seeing, I think its related. Would you mind taking a look, and reverting if its going to take a while to fix?

```FAILED: bin/clang-format 
: && /b/s/w/ir/x/w/llvm_build/./bin/clang++ --sysroot=/b/s/w/ir/x/w/cipd/linux -stdlib=libc++ -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -flto=full -ffat-lto-objects -ffile-prefix-map=/b/s/w/ir/x/w/llvm_build/tools/clang/stage2-bins=../../../../llvm-llvm-project -ffile-prefix-map=/b/s/w/ir/x/w/llvm-llvm-project/= -no-canonical-prefixes -fno-common -Woverloaded-virtual -Wno-nested-anon-types -O3 -DNDEBUG -stdlib=libc++ -static-libstdc++ -fuse-ld=lld -Wl,--color-diagnostics -flto=full -ffat-lto-objects    -Wl,--gc-sections tools/clang/tools/clang-format/CMakeFiles/clang-format.dir/ClangFormat.cpp.o -o bin/clang-format  -Wl,-rpath,"\$ORIGIN/../lib:"  lib/libLLVMSupport.a  -lpthread  lib/libclangBasic.a  lib/libclangFormat.a  lib/libclangRewrite.a  lib/libclangToolingCore.a  lib/libclangToolingInclusions.a  lib/libclangToolingCore.a  lib/libclangRewrite.a  lib/libclangLex.a  lib/libclangBasic.a  lib/libLLVMFrontendOpenMP.a  lib/libLLVMScalarOpts.a  lib/libLLVMAggressiveInstCombine.a  lib/libLLVMInstCombine.a  lib/libLLVMFrontendOffloading.a  lib/libLLVMTransformUtils.a  lib/libLLVMAnalysis.a  lib/libtf_xla_runtime.a  lib/libLLVMProfileData.a  lib/libLLVMSymbolize.a  lib/libLLVMDebugInfoPDB.a  lib/libLLVMDebugInfoMSF.a  lib/libLLVMDebugInfoBTF.a  lib/libLLVMDebugInfoDWARF.a  lib/libLLVMObject.a  lib/libLLVMIRReader.a  lib/libLLVMBitReader.a  lib/libLLVMAsmParser.a  lib/libLLVMCore.a  lib/libLLVMRemarks.a  lib/libLLVMBitstreamReader.a  lib/libLLVMMCParser.a  lib/libLLVMMC.a  lib/libLLVMDebugInfoCodeView.a  lib/libLLVMTextAPI.a  lib/libLLVMBinaryFormat.a  lib/libLLVMTargetParser.a  lib/libLLVMSupport.a  -lrt  -ldl  -lpthread  -lm  /b/s/w/ir/x/w/zlib_install_target/lib/libz.a  /b/s/w/ir/x/w/zstd_install/lib/libzstd.a  -pthread  lib/libLLVMDemangle.a && :
ld.lld: llvm/include/llvm/Support/GenericDomTree.h:401: DomTreeNodeBase<NodeT> *llvm::DominatorTreeBase<llvm::BasicBlock, false>::getNode(const NodeT *) const [NodeT = llvm::BasicBlock, IsPostDom = false]: Assertion `(!BB || Parent == NodeTrait::getParent(const_cast<NodeT *>(BB))) && "cannot get DomTreeNode of block with different parent"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.	Program arguments: /b/s/w/ir/x/w/llvm_build/./bin/ld.lld --sysroot=/b/s/w/ir/x/w/cipd/linux --hash-style=gnu --build-id --eh-frame-hdr -m elf_x86_64 -pie -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o bin/clang-format /b/s/w/ir/x/w/cipd/linux/usr/lib/x86_64-linux-gnu/Scrt1.o /b/s/w/ir/x/w/cipd/linux/usr/lib/x86_64-linux-gnu/crti.o /b/s/w/ir/x/w/llvm_build/./lib/clang/20/lib/x86_64-unknown-linux-gnu/clang_rt.crtbegin.o -L/b/s/w/ir/x/w/llvm_build/./bin/../lib/x86_64-unknown-linux-gnu -L/b/s/w/ir/x/w/llvm_build/./lib/clang/20/lib/x86_64-unknown-linux-gnu -L/b/s/w/ir/x/w/cipd/linux/lib/x86_64-linux-gnu -L/b/s/w/ir/x/w/cipd/linux/lib/../lib64 -L/b/s/w/ir/x/w/cipd/linux/usr/lib/x86_64-linux-gnu -L/b/s/w/ir/x/w/cipd/linux/lib -L/b/s/w/ir/x/w/cipd/linux/usr/lib --fat-lto-objects -plugin-opt=mcpu=x86-64 -plugin-opt=O3 -plugin-opt=-function-sections=1 -plugin-opt=-data-sections=1 --color-diagnostics --gc-sections tools/clang/tools/clang-format/CMakeFiles/clang-format.dir/ClangFormat.cpp.o -rpath $ORIGIN/../lib: lib/libLLVMSupport.a -lpthread lib/libclangBasic.a lib/libclangFormat.a lib/libclangRewrite.a lib/libclangToolingCore.a lib/libclangToolingInclusions.a lib/libclangToolingCore.a lib/libclangRewrite.a lib/libclangLex.a lib/libclangBasic.a lib/libLLVMFrontendOpenMP.a lib/libLLVMScalarOpts.a lib/libLLVMAggressiveInstCombine.a lib/libLLVMInstCombine.a lib/libLLVMFrontendOffloading.a lib/libLLVMTransformUtils.a lib/libLLVMAnalysis.a lib/libtf_xla_runtime.a lib/libLLVMProfileData.a lib/libLLVMSymbolize.a lib/libLLVMDebugInfoPDB.a lib/libLLVMDebugInfoMSF.a lib/libLLVMDebugInfoBTF.a lib/libLLVMDebugInfoDWARF.a lib/libLLVMObject.a lib/libLLVMIRReader.a lib/libLLVMBitReader.a lib/libLLVMAsmParser.a lib/libLLVMCore.a lib/libLLVMRemarks.a lib/libLLVMBitstreamReader.a lib/libLLVMMCParser.a lib/libLLVMMC.a lib/libLLVMDebugInfoCodeView.a lib/libLLVMTextAPI.a lib/libLLVMBinaryFormat.a lib/libLLVMTargetParser.a lib/libLLVMSupport.a -lrt -ldl -lpthread -lm /b/s/w/ir/x/w/zlib_install_target/lib/libz.a /b/s/w/ir/x/w/zstd_install/lib/libzstd.a lib/libLLVMDemangle.a -Bstatic -lc++ -Bdynamic -lm /b/s/w/ir/x/w/llvm_build/./lib/clang/20/lib/x86_64-unknown-linux-gnu/libclang_rt.builtins.a --as-needed -lunwind --no-as-needed -lpthread -lc /b/s/w/ir/x/w/llvm_build/./lib/clang/20/lib/x86_64-unknown-linux-gnu/libclang_rt.builtins.a --as-needed -lunwind --no-as-needed /b/s/w/ir/x/w/llvm_build/./lib/clang/20/lib/x86_64-unknown-linux-gnu/clang_rt.crtend.o /b/s/w/ir/x/w/cipd/linux/usr/lib/x86_64-linux-gnu/crtn.o
1.	Running pass "function<eager-inv>(loop-mssa(licm<allowspeculation>),gvn<>,memcpyopt,dse,move-auto-init,mldst-motion<no-split-footer-bb>,loop(indvars,loop-deletion,loop-unroll-full),loop-distribute,loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>,infer-alignment,loop-unroll<O3>,transform-warning,sroa<preserve-cfg>,instcombine<max-iterations=1;no-use-loop-info;no-verify-fixpoint>,simplifycfg<bonus-inst-threshold=1;forward-switch-cond;switch-range-to-icmp;switch-to-lookup;no-keep-loops;hoist-common-insts;sink-common-insts;speculate-blocks;simplify-cond-branch;no-speculate-unpredictables>,sccp,instcombine<max-iterations=1;no-use-loop-info;no-verify-fixpoint>,bdce,slp-vectorizer,vector-combine,infer-alignment,instcombine<max-iterations=1;no-use-loop-info;no-verify-fixpoint>,loop-mssa(licm<allowspeculation>),alignment-from-assumptions,jump-threading)" on module "ld-temp.o"
2.	Running pass "instcombine<max-iterations=1;no-use-loop-info;no-verify-fixpoint>" on function "_ZL15getOpenFileImplIN4llvm12MemoryBufferEENS0_7ErrorOrINSt3__210unique_ptrIT_NS3_14default_deleteIS5_EEEEEEiRKNS0_5TwineEmmlbbNS3_8optionalINS0_5AlignEEE"
#0 0x000055e2ff6b31b8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/b/s/w/ir/x/w/llvm_build/./bin/ld.lld+0x237e1b8)
clang++: error: unable to execute command: Aborted
clang++: error: linker command failed due to signal (use -v to see invocation)
```

First Failing Bot: https://ci.chromium.org/ui/p/fuchsia/builders/prod/clang-linux-x64/b8739716235612224273/overview

Logs: https://logs.chromium.org/logs/fuchsia/buildbucket/cr-buildbucket/8739716235612224273/+/u/clang/build/stdout

You should be able to reproduce with any 2-stage build, as long as you're also building clang-format.

Bug: https://fxbug.dev/359549254

https://github.com/llvm/llvm-project/pull/102782


More information about the llvm-commits mailing list