<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/151768>151768</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Fatal error regression: Assertion `SubregToRegSrcInsts.empty() && "can this happen?"' fails on neoverse-v2 machines.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
scamp-nvidia
</td>
</tr>
</table>
<pre>
Recent Flang builds have begun to fail compiling the example code below (reduced and anonymized from a larger code) with an error message:
test3.f90:
```
MODULE TEST_MOD
INTEGER, PARAMETER :: qq =SELECTED_REAL_KIND(10)
TYPE type1
REAL(qq),POINTER :: QONE(:,:) => NULL()
REAL(qq),POINTER :: QTWO(:,:) => NULL()
INTEGER,POINTER :: IONE(:) => NULL()
END TYPE type1
TYPE type2
REAL(qq) ,POINTER :: ARRAY1(:,:,:,:)
END TYPE type2
type :: subtype1
integer :: node = 2
end type subtype1
type :: type3
integer :: intone = 10
integer :: inttwo = 10
type(subtype1) :: comm_line
end type type3
CONTAINS
SUBROUTINE DUMMY_SUB(P,WONE,WTWO)
IMPLICIT COMPLEX(qq) (C)
IMPLICIT REAL(qq) (A-B,D-H,O-Z)
TYPE (type2) WONE
TYPE (type3) WTWO
TYPE (type1), POINTER :: PPTYPE
COMPLEX(qq) :: CNUM(10,10,10)
COMPLEX(qq) :: PHASOR(10,4)
do ii=1,2
LLL=PPTYPE%IONE(1)
MAXX=2*LLL+1
LM=LLL*LLL
DO ISPIN=0,10
DO NBVAR=1,WTWO%INTONE
CNUM(NBVAR,1,1)= WONE%ARRAY1(ISPIN,NBVAR,1,1)*PPTYPE%QTWO(1,1)*(WONE%ARRAY1(1,NBVAR,1,1))
ENDDO
ENDDO
CALL FLOP(CNUM,1,1,WTWO%INTTWO,.FALSE.)
IF (1.NE.WTWO%COMM_LINE%NODE-1) write(*,*)
DO M=1,MAXX
CTEMPO_VAR= WONE%ARRAY1(M,1,1,1)
PHASOR(M,1)=PHASOR(M,1)+CTEMPO_VAR
ENDDO
enddo
END SUBROUTINE DUMMY_SUB
END MODULE TEST_MOD
```
Compiling this with a recent Flang build shows that it fails at "-O2" and with "-mcpu=neoverse-v2", but compiles absent either of those.
```
scamp@grace2:~$ flang test3.f90 -O2 -c -mcpu=neoverse-v2
flang: /proj/build/llvm/Linux_aarch64/llvm/lib/CodeGen/RegisterCoalescer.cpp:2375: bool {anonymous}::RegisterCoalescer::joinCopy(llvm::MachineInstr*, bool&, llvm::SmallPtrSetImpl<llvm::MachineInstr*>&): Assertion `SubregToRegSrcInsts.empty() && "can this happen?"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: /proj/nv/llvm/Linux_aarch64/llvm-3590/bin/flang -fc1 -triple aarch64-unknown-linux-gnu -emit-obj -fcolor-diagnostics -mrelocation-model pic -pic-level 2 -pic-is-pie -target-cpu neoverse-v2 -target-feature +outline-atomics -target-feature +v9a -target-feature +bf16 -target-feature +ccidx -target-feature +complxnum -target-feature +crc -target-feature +dotprod -target-feature +ete -target-feature +fp-armv8 -target-feature +fp16fml -target-feature +fpac -target-feature +fullfp16 -target-feature +i8mm -target-feature +jsconv -target-feature +lse -target-feature +mte -target-feature +neon -target-feature +pauth -target-feature +perfmon -target-feature +rand -target-feature +ras -target-feature +rcpc -target-feature +rdm -target-feature +spe -target-feature +ssbs -target-feature +sve -target-feature +sve-bitperm -target-feature +sve2 -target-feature +trbe -floop-interchange -vectorize-loops -vectorize-slp -resource-dir /proj/nv/llvm/Linux_aarch64/llvm-3590/lib/clang/22 -mframe-pointer=non-leaf -O2 -o test3.o -x f95 test3.f90
1. Running pass 'Function Pass Manager' on module 'FIRModule'.
2. Running pass 'Register Coalescer' on function '@_QMtest_modPdummy_sub'
#0 0x0000000004d209e0 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/proj/nv/llvm/Linux_aarch64/llvm-3590/bin/flang+0x4d209e0)
#1 0x0000000004d1ddb8 llvm::sys::RunSignalHandlers() (/proj/nv/llvm/Linux_aarch64/llvm-3590/bin/flang+0x4d1ddb8)
#2 0x0000000004d1df3c SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
#3 0x0000fffe4ffd08dc (linux-vdso.so.1+0x8dc)
#4 0x0000fffe4fc4f200 __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#5 0x0000fffe4fc0a67c gsignal ./signal/../sysdeps/posix/raise.c:27:6
#6 0x0000fffe4fbf7130 abort ./stdlib/abort.c:81:7
#7 0x0000fffe4fc03fd0 __assert_fail_base ./assert/assert.c:89:7
#8 0x0000fffe4fc04040 __assert_perror_fail ./assert/assert-perr.c:31:1
#9 0x000000000792b3b0 (anonymous namespace)::RegisterCoalescer::joinCopy(llvm::MachineInstr*, bool&, llvm::SmallPtrSetImpl<llvm::MachineInstr*>&) (.constprop.0) RegisterCoalescer.cpp:0:0
#10 0x000000000792b794 (anonymous namespace)::RegisterCoalescer::copyCoalesceWorkList(llvm::MutableArrayRef<llvm::MachineInstr*>) RegisterCoalescer.cpp:0:0
#11 0x000000000792bb20 (anonymous namespace)::RegisterCoalescer::copyCoalesceInMBB(llvm::MachineBasicBlock*) RegisterCoalescer.cpp:0:0
#12 0x000000000792ee80 (anonymous namespace)::RegisterCoalescer::run(llvm::MachineFunction&) RegisterCoalescer.cpp:0:0
#13 0x000000000792ff6c (anonymous namespace)::RegisterCoalescerLegacy::runOnMachineFunction(llvm::MachineFunction&) RegisterCoalescer.cpp:0:0
#14 0x0000000007733c7c llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0
#15 0x000000000a25feb8 llvm::FPPassManager::runOnFunction(llvm::Function&) (/proj/nv/llvm/Linux_aarch64/llvm-3590/bin/flang+0xa25feb8)
#16 0x000000000a260178 llvm::FPPassManager::runOnModule(llvm::Module&) (/proj/nv/llvm/Linux_aarch64/llvm-3590/bin/flang+0xa260178)
#17 0x000000000a260a0c llvm::legacy::PassManagerImpl::run(llvm::Module&) (/proj/nv/llvm/Linux_aarch64/llvm-3590/bin/flang+0xa260a0c)
#18 0x0000000004d72698 Fortran::frontend::CodeGenAction::executeAction() (/proj/nv/llvm/Linux_aarch64/llvm-3590/bin/flang+0x4d72698)
#19 0x0000000004d58e24 Fortran::frontend::FrontendAction::execute() (/proj/nv/llvm/Linux_aarch64/llvm-3590/bin/flang+0x4d58e24)
#20 0x0000000004d431d4 Fortran::frontend::CompilerInstance::executeAction(Fortran::frontend::FrontendAction&) (/proj/nv/llvm/Linux_aarch64/llvm-3590/bin/flang+0x4d431d4)
#21 0x0000000004d60378 Fortran::frontend::executeCompilerInvocation(Fortran::frontend::CompilerInstance*) (/proj/nv/llvm/Linux_aarch64/llvm-3590/bin/flang+0x4d60378)
#22 0x00000000047190ac fc1_main(llvm::ArrayRef<char const*>, char const*) (/proj/nv/llvm/Linux_aarch64/llvm-3590/bin/flang+0x47190ac)
#23 0x0000000004718c54 main (/proj/nv/llvm/Linux_aarch64/llvm-3590/bin/flang+0x4718c54)
#24 0x0000fffe4fbf73fc __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#25 0x0000fffe4fbf74cc call_init ./csu/../csu/libc-start.c:128:20
#26 0x0000fffe4fbf74cc __libc_start_main ./csu/../csu/libc-start.c:379:5
#27 0x000000000471736c _start (/proj/nv/llvm/Linux_aarch64/llvm-3590/bin/flang+0x471736c)
flang-22: error: unable to execute command: Aborted
flang-22: error: flang frontend command failed due to signal (use -v to see invocation)
flang version 22.0.0git (https://github.com/llvm/llvm-project b63a9b7a3cdc1e41545df595215077e50bfd04af)
Target: aarch64-unknown-linux-gnu
Thread model: posix
InstalledDir: /proj/nv/llvm/Linux_aarch64/llvm-3590/bin
Build config: +assertions
flang-22: note: diagnostic msg:
********************
scamp@grace2:~$ flang test3.f90 -O2 -c
scamp@grace2:~$ flang test3.f90 -c -mcpu=neoverse-v2
scamp@grace2:~$
```
It would seem that the similar "`SubregToRegSrcInsts.empty() && "can this happen?"'" signatures with #151592 implies it's likely related to the same problem.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzMWl9z6riS_zTKi8qULQOGhzw4_LlDLQQuydmZ2RdKltugObbkkWSS3If97FuSDRjinDnnTKZqU0nKtPrPr1stdVuCas33AuAeDR7QYHpHK3OQ6l4zWpSeOPKU07tEpm_3W2AgDJ7nVOxxUvE81fhAj4AT2FcCG4kzynPMZFHynIs9NgfA8EqLMgfMZGoZc_mCERkpSCsGKabC_knxVvD_QIozJQtMcU7VHpQTQWSMX7g5YCowKCUVLkBrugcUxhj5cf1rQJuwl419FDrK0G9-_Ri7n9V6-mU5w8-zp-fdaj219MXj8-xfsy0iE7yJt_Fq9jzbYisfxvjPPzEKp0-z5WzyPJvutrN4ufuvxeMUkVHgIzI-633-fTPD5q2EwJIsHyKjP_-0LGSyWVsbZ6X_Xj_OEBnZT2Ti_o-tFRTO8OOXpRVsa_4LXc-_rr9f18XVGzWLFqRvKZg9Tq9dfR8A0okc4_dG4-02_j24Rt_-78xeWSRti5ZwUqWr5Bx898OFAZs6zbiwSYfCKXboQKS1dEusU619Dj_SyYWRotYauAR7P25eJG4xnPUjMjqbdvF2AkwWxS7nAs68Z6AnIOeRyfrxOV48PrVpT18etusvz4vHGZ5-Wa1-3z19eUBktEFk8qub38mvLltcXBerzXIxWTzjyXq1Wc5-O08UIqPJVc6cGK-mE5FR7D0gMpl6vyAyWXv_8241IDKq58zOPsYOQhdD2DBgh66LI6hTH9_kz2ZjmVohuXGk5po8flk1y3Vy_jf-K6nNL_HTenuS69cSZ6FUYs5ROA0QmVzyfblconDaoCKDZk0FjbVV_NtvKJwSRGLLSB4uybpcoXDqiG7oRJ6u8eJps3hE4bTBfRqpBx8f_jveNijqmR0sHp_bYW5crCNQs5NJUP-NbV7WeTE4r8TaHpm84yXx2a9my2kNITK6VRR0Kjmt6Om6vaO0Pk3i5RLPl-uNzUIH-yTd8tA9THrzePk0653SeW6TJeg9znoN42S9Wu2WCwfrcT2deW6pvShuwG1qbpshcTsXzpFdNVF1c-bHePI8W23Wuzrc74LWRnma7XP-rC7Rfk8jDy3N1yiu4wIiTeXVLty52NsM7ytduxpOWrWZ66ayYvWusGN9kC8amwM1mBtX1zWmBiNCvDVBhLjK7cQtqWBlhcKpAHkEpcE7Wha7dJPKNP0AaEwTbc0ANwdQWGbYHKSG3qmMt2C63gP1_b2iDAgK4_9FpI8zh-9c67G3JthjuMu6Hztm1ySQeankH4jMnWeIzPP8WCAyX3JRve4oVeww7F_IOU8QmU9kCv8Cgch8C3uuDaiJpDloBqrHyhKFMQmjgdWfSJljFD3UbYysNIqm9W7yTrIm_yG5mMjyDZGRM-mIK8oOXMBCaKPqJHWKERnaxwvfU0HzfGPUE5hFUeYonHysI5w58bErulqDMlwKjIb-U5Uo2D_LLeyfFLP8ugdFad7qso-d2NDOLKOizpQDLUsQKJy7iY1cRkDaQ368Wc7ip5mtqQU3mOKk2mMFpVTGdoQHY0rtyvockfmem0OV9JgsWvHOj4VnZwiYQWTOta5AIzJ3GcYFy6sUXCfJFNUHnFD21di0sLafDGVfcVoVZd34-b16IWyU3CtaYKr2VQHC6OtEEMdvZ4EXDsa-TRhuE6BOOy9jAfaM4raZbdi9SnwV8kV4uVXi7UWFPSi48WTyhxWQuVReyuleSG0409grFOSSUTsRXiFTyHHJGfZKzrwcjpBjUn_g2is5YM_YTth4rKxwK73P9AyoqRRgRB5kZWwP4VEjC2fqPctxTLvISRYMu-iM8fS1c0AWZf4qqqJzULEucipNqWTaNQQGushZ6VFVHEfdY8EwK_LuIdoJIKvy3Ip1jfFR0enLH5pJcewayXUn5qLbFQFSdNFL-6rVOQAqK7pllF0WnfTOOVes7AyHSjs91mWnA1onndr1sZv9CF7CTQmq28gROlPYqASwl-VSlp5tqhU7ULEH7B2BGan4f8CzY7pN0HmJPQVaVoqBl3L1E8u83vGZKxhkTgj2ikzRArxSOhi2tkjh5UCzuubIpghJ7L3ibDy41CTkx0GzB20rIWyhLanWGJFoXgnmNuCNJayooHtQdiuVAhcyrXJwXIvtyn1AJLI7HPlA26m24EtxqVVlJzOIRKjv7_69suB2hUw3aVUUbztdJXbItxti6GP_1T_99FPij8FvVRv9puuHjeLCuN322e69V6VL0Zed1EYBLZpyxYVpXhb-1p6LyIP_2oBq-itEwuAacpCmyagL8rYST3wvaP4LFWkOSp-L26egcnYvqMgtqixk-Mo-IiMXlwnWfM9FJnemKfRHydO6JW0kdNNi-O6vNhA2BrIsg36Wpf4oZdaXuvQcUy17WvYCh26Usguy_pUg62fE9_FuV5qDApruvvI83_GizMEWSleZcM9GpjS5jVOLrcdQGPf7KIyjYaN8cK3cp8OI4b12Xjg19SMi85779KZTKG11L6Xmr4jMFeUanGISoTA-6R1e6U2yKAh9TBPbVDg9Jq0XrSM58VFgcTXi0Q2sMEutz9Q1QTvbu-wSqsHpqonnh1rZuKVsdKOs7_dbykp3KuV0dqnz7LjTGVqAQaNz3E6XaEySMPHtbJ6bSCxoAbp0a238_6udtDh7TAptK3rZs0sTf9QknzLYrlv_1udo3P9Jn5ks306kX6X6uuTaXPtfGZrkECtF37aQ_aVf3-dBcOtBQn521toeLMTq4aFr-h6o5uwhl-xrsz18D0hyAxJg9LMgVSW6YJ0qWZMO3wMqvAGVZUP2w6CWsKfs7QxtLd7h-RSs_SusURiyiOEPFdtq3oLUieUGhF0_JVWmXjod-jpADdqgKBlkcFX15hsrd2oqfhjO3y-IDaTmwIyEwfAa8NAPou8BfGp-2jPZkD4TrINzARvdgqV-e8rzVuK1YNc7ZudC-UcgU59dII-uG46IDMcjPJfKKCpqEJmSwoBI60_NgUZcz7wjwSuwykB8ypBP7I4cnAvY8TXYwQhI_1tg582nDrSfi9MhOeMkN-1wPwzSb-Ksj9NA2VpCBYPuuH6_o5-YMA36i283ffPQD6NvJkzjxcXFY3Nw8W2P3oWkrlyf5JNDffHpuuuOgrFPGc5YsCsov16RrU6AHajCrn85Vf8JvqZ9Gt4a0QVveIN3xAZ9bLF-mj2r8WKvf9tGhxnDu13OE7bThiqzYzTPXbRc88p09b5Vb94EuoR6B9sn2zeCsLE4uLXYZww7fi64uTVSP1rNntPsGuXA3QySpvKRd68CVuOVD13wOzWHkW0tBo3i6GYyonDIcK3y06bD6qynw5E9QlAY1xfZ9qEStkvFRuJmtbnLQOrWEo7tuw2kH8nWx5KnxXcSbA5mcVo5tc2bGCKjSgP2jo4GgHlrNZ_R4SMobd__COn5PX_PXRx-7AQXJ8OQjpOIhixlAfSDQX-QZoPxgAQDP4pg4CdZ6vdpVtt9dodA1p0Pj1Qtl3sHxe7A1PLWL49-7PaYPId0ytXPn_D68YO78mBSZLy5Mnigp_NyfRN_IY377sHlWBcXet9874D8jd8fu_X4fvaPLkg6xW_uYRYGv8gqT23OFPVtkDkA1rzgOVUYEfIptwmIkDpTTaVAn66VwmAQDMYE86LMOWjMDSKRxjn_CvkbVpBTA6lNaAeJFoBLJZMcih6-S-_DdByO6R3cB9Gg70fjaDi6O9z3g4QGCQlYNqb9PiSQ-ONBCBH102wUDoI7fk98MvBHfkB8QvqjXhRG0RACGI8YBJBS1PehoDzv2TTqSbW_czcW98EgsCZymkCu3VdpCBHwgt2odXMwvVP3LveSaq9R38-5jdRZjeEmh_s5NTRvvumiYK9A67oD-kducDSW4upioahfRnTvrlL5_c9f3jTRON6T_wsAAP__mPHk6g">