[llvm] CodeGen: Compute LiveIntervals before TwoAddressInstructions (PR #225174)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 29 23:52:13 PDT 2026
arsenm wrote:
> > This PR is leading to the assertion error at https://ci.chromium.org/ui/p/fuchsia/builders/global.ci/clang_toolchain.ci.core.x64-debug/b8669316146529884913/overview:
> > ```
> > FAILED: [code=134] x64-shared/obj/third_party/boringssl/src/crypto/fipsmodule/libcrypto.bcm.cc.o
> >
> > clang++: llvm/lib/CodeGen/MachineScheduler.cpp:1632: void llvm::ScheduleDAGMILive::updatePressureDiffs(ArrayRef<VRegMaskOrUnit>): Assertion `VNI && "No live value at use."' failed.
> > PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace and dumped files.
> > Stack dump:
> > 0. Program arguments: ../../prebuilt/third_party/clang/custom/bin/clang++ -MD -MF x64-shared/obj/third_party/boringssl/src/crypto/fipsmodule/libcrypto.bcm.cc.o.d -D_LIBCPP_DISABLE_UNUSED_STRUCT_WARNINGS -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -D_LIBCPP_REMOVE_TRANSITIVE_INCLUDES -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS=1 -DZX_ASSERT_LEVEL=2 -DBORINGSSL_ALLOW_CXX_RUNTIME -DBORINGSSL_NO_STATIC...
> > 1. <eof> parser at end of file
> > 2. Code generation
> > 3. Running pass 'Function Pass Manager' on module '../../third_party/boringssl/src/crypto/fipsmodule/bcm.cc'.
> > 4. Running pass 'Machine Instruction Scheduler' on function '@bn_mul_comba8'
> > #0 0x000055eafa733848 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (../../prebuilt/third_party/clang/custom/bin/clang+++0x98ff848)
> > clang++: error: clang frontend command failed due to signal (use -v to see invocation)
> > Fuchsia clang version 24.0.0git (https://llvm.googlesource.com/llvm-project 0cf09fc077d86dd454a58a292da8c047efe64af9)
> > ```
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > Reprodcer:
> > ```
> > target triple = "x86_64"
> > define i64 @foo(ptr %r) {
> > entry:
> > %0 = tail call { i64, i64 } asm "", "=&r,=r,0,1"(i64 0, i64 0)
> > %asm0 = extractvalue { i64, i64 } %0, 0
> > %asm1 = extractvalue { i64, i64 } %0, 1
> > store i64 %asm0, ptr %r
> > %1 = tail call { i64, i64 } asm "", "=&r,=r,0,1"(i64 %asm1, i64 0)
> > %asm2 = extractvalue { i64, i64 } %1, 0
> > ret i64 %asm2
> > }
> > ```
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > ```
> > llc -O1 -mtriple=x86_64 test.ll -o /dev/null
> > ```
>
> This one is probably #225079
This one is https://github.com/llvm/llvm-project/pull/227581, #225079 is still necessary once LiveVariables is fully removed
https://github.com/llvm/llvm-project/pull/225174
More information about the llvm-commits
mailing list