[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