<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/120029>120029</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[X86][CodeGen][GlobalISel] Crash: Unable to copy EFLAGS physical register!
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
nmosier
</td>
</tr>
</table>
<pre>
`llc`'s X86 backend crashes (branch release/19.x) when Global ISel is enabled for the following LLVM IR (reduced using bugpoint):
```
define dso_local void @bitmap_clear_range(i32 %0) local_unnamed_addr #0 {
br label %.critedge
.critedge: ; preds = %21, %1
%2 = getelementptr inbounds i8, ptr null, i64 16
%3 = load i32, ptr %2, align 8
%4 = shl nuw i32 %3, 7
%5 = add i32 %4, 128
%6 = icmp ult i32 %4, %0
%7 = icmp ugt i32 %5, 0
%8 = or i1 %6, %7
br i1 %8, label %9, label %21
9: ; preds = %.critedge
%10 = icmp ugt i32 %4, %0
%11 = sub i32 %0, %4
%12 = lshr i32 %11, 6
%13 = select i1 %10, i32 0, i32 %12
%14 = select i1 %7, i32 0, i32 1
%15 = icmp eq i32 %13, %14
br i1 %15, label %17, label %16
16: ; preds = %9
store i64 poison, ptr null, align 8
br label %17
17: ; preds = %16, %9
%18 = phi i32 [ %14, %16 ], [ %13, %9 ]
%19 = zext nneg i32 %18 to i64
%20 = getelementptr inbounds [2 x i64], ptr null, i64 0, i64 %19
store i64 0, ptr %20, align 8
br label %21
21: ; preds = %17, %.critedge
%22 = icmp eq ptr null, null
br i1 %22, label %23, label %.critedge
23: ; preds = %21
ret void
}
```
Save the above file to `bug.ll`, then reproduce with the following command on an x86 host:
`llc --global-isel bug.ll`
This crashes with the following backtrace:
```
LLVM ERROR: Unable to copy EFLAGS physical register!
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: ./bin/llc --global-isel bug.ll
1. Running pass 'Function Pass Manager' on module 'bug.ll'.
2. Running pass 'Post-RA pseudo instruction expansion pass' on function '@bitmap_clear_range'
#0 0x000055fb6b3bb510 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (./bin/llc+0x360b510)
#1 0x000055fb6b3b8aee SignalHandler(int) Signals.cpp:0:0
#2 0x00007f3df3d6e520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#3 0x00007f3df3dc29fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#4 0x00007f3df3dc29fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
#5 0x00007f3df3dc29fc pthread_kill ./nptl/pthread_kill.c:89:10
#6 0x00007f3df3d6e476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
#7 0x00007f3df3d547f3 abort ./stdlib/abort.c:81:7
#8 0x000055fb683c6f59 llvm::DisplayGraph(llvm::StringRef, bool, llvm::GraphProgram::Name) (.cold) GraphWriter.cpp:0:0
#9 0x000055fb6b30d0ae (./bin/llc+0x355d0ae)
#10 0x000055fb69b65759 llvm::X86InstrInfo::copyPhysReg(llvm::MachineBasicBlock&, llvm::MachineInstrBundleIterator<llvm::MachineInstr, false>, llvm::DebugLoc const&, llvm::MCRegister, llvm::MCRegister, bool) const (./bin/llc+0x1db5759)
#11 0x000055fb6a70294d llvm::TargetInstrInfo::lowerCopy(llvm::MachineInstr*, llvm::TargetRegisterInfo const*) const (./bin/llc+0x295294d)
#12 0x000055fb6a3234b8 (anonymous namespace)::ExpandPostRA::runOnMachineFunction(llvm::MachineFunction&) ExpandPostRAPseudos.cpp:0:0
#13 0x000055fb6a46660f llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0
#14 0x000055fb6a9be29a llvm::FPPassManager::runOnFunction(llvm::Function&) (./bin/llc+0x2c0e29a)
#15 0x000055fb6a9be424 llvm::FPPassManager::runOnModule(llvm::Module&) (./bin/llc+0x2c0e424)
#16 0x000055fb6a9bee51 llvm::legacy::PassManagerImpl::run(llvm::Module&) (./bin/llc+0x2c0ee51)
#17 0x000055fb684e986f compileModule(char**, llvm::LLVMContext&) llc.cpp:0:0
#18 0x000055fb683d94e6 main (./bin/llc+0x6294e6)
#19 0x00007f3df3d55d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#20 0x00007f3df3d55e40 call_init ./csu/../csu/libc-start.c:128:20
#21 0x00007f3df3d55e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#22 0x000055fb684e0e25 _start (./bin/llc+0x730e25)
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJycWF2T2yoS_TXMCzUuQN8PfvB8ODtVyd6pmexu3lxIwhIbDFpAGc_--q1Gkm15lOzNvXVTg6A5ffrQdEvmzslGC7FGyR1KHm5471tj1_pgnBT2pjT1-xqlRKkKpQSxzOFveYpLXn0XusaV5a4VDiOWl5brqsVWKMGdQGxLi9URsQK_tULjT8qUXOGnV6GwdFhoXipR472x2LcC741S5k3qBn_-_M8v-OkFEK2o-0rUuHewUPZNZ6T2iBUo2iCyAT7D_2RTi73UAtfO7JSpuMI_jKwxikkp_YF3u0oJbneW60YglsuIYcQSAuyC-a7Xmh9EveN1bTFiEcEou0Nkg3FpseKlULBhVVnpRd0I8E4258dog1F0hzsraodR9ADGjCJ2DwMacGAmLDXCCyUOQvvOWyx1aXpdOyxzMIcp3SsFY5nGmKbT5ihsVobXWEZssgVUGHMlG43zyTgOxq5VWPdveAw3AsNsMkmCCa_raTmGZcpOGGkwkNWhw73yM6ug3WiWXZg1J7MEzE42ebAxFksakEeMbBJ4mA4CnLQuZk-MDpIXi1JfnktwSMkiqw_kKR2E6kt8zon7wXQyGU5NudZONjSc7Olk6HA0TihR-TEWGnDA_jQIWKc98cc92Yctp8yhyTke8Z8TXDRlWDxXkiYz8Wg2f0wHLWm6KGYRsJw3VoQU7Ix0Rl8n52XCXV4Rmo3gGYD_3n8fqNApU4qTEEMqda0cREjuxvhHIVKMkofwMK5MEhVhYUIpAsp_xdFjrUVzEjTH3kDQpxtLfnVlUXLH8DHYD06vby-ZBsEngJ5lJZdXmPxK0in3GV08r-F0l24BY7OsuWQX_s5yhrH5hYtmj1eVj0U_K3mAaYUP9Rdss4erSv3Kf4hQ8nlpfgi8l0qA6CglZd-slApd5h4sNLaiswZ6AH6Tvr1qFJU5HLiusdGYa3zMU9wa50-tQakK3942oe3cSicUPuOTzddWulPzWgCH_uYtr8THVhMa1OPLyx8voME_QiODCCrTvePH7efNp1fcte9OQhuyopHOC4uCNM-fHzevj1BuDtJjDowgRmM9ALTedw78sS1i20b6ti9XlTkgtlXqx_TntrPm36LyiG2lc71wiG0x6CB1pfp60DZEdg5iBbp7Xn3HdX_ohpDICpHi2ZrG8gPmtukhvcE9XiG2LaUO_n6iIdlQ2P7Saw1qddzBK0C27XXlpdH4GSa-cM0bCD2DMzqYulcCrEYMlgEttoTzbJy_fdngzom-Nlhq520_IItjx7WDERiP2PvJL2LZT3p-6DWhsZMjIYQkyb5My6gsoVcEeaMNijbu3Q2DZyu1D5p9DWnA8rOR5W8747wV_IBYKFHDawm8s8zEQ-yOHKOUlKEfFCMFekUh50LgV9lorv7Gda1AsnxEHKbdqurg2Ej4N6CwESXbR_U-qlMRihXLwbMsEdse83SXxrdK6v542-h-WKhWzqzSQCweCs9EK5oDVqzYV3i363xrBa9336VSO3nohjrIg9wQrO68Qmx7abaqULSJYxRtsnQEj_8MuPbCaq5-CZvlKNrQSYRkCfZyzy-x8uISK70WNM5S3LhwAAFmGCK2XYWnd1eLDm5fZ5w8Ira1XDoRgBk0vyn0bI6bxNk-guJn_YDq6-G8wtTACwr9lLD5ZbbkUZXuk-IiYR-k6xR__2R5186S9NVbqZsXsYf8LI0JZf-8HDaM13-Y-Ts_iCmJK6NqGAerf0HptwspWMwTmdSEi5_cgSSBxSHZ4ArMrmFRpkk2i-pbnj7BpX_SezPMQHV9bt_di2hmYX7hVSu1uONOVnfKVN_HG_nBIuDd9XC_nryw3BuLovtlMwDYc-UEih7nYA-i7JvPpsKV0c5_9HX_cir4P58fTqMYMJYFo3UJkpwFmxUNnhFWxPWFg6_cNsJfaabMm7D3pntfUmwMdDMnOuBMZAFqinTzfxizIgFOZ8ZsxjhiUVzmsJVro98PpncYPrlcF6prMbh_hOpeQ_l_2Yy1ttd_6JHy1F6WwjmvpUD0Eug5dJHrGgoUoxnFOE1Tsv-YORM0NLULUotsrmiAUh23fhU-NRfwFkjFM1JFKVjBL0htn2Hf1Ft_n87Hg6sIuDgfXHJNIGbxnyDwJTT4-dmMU792HrP47Dy9di4SeuFciYZX72OLPtN4OnTqROUvUBAJPVPIZhU3FkWe7uFts5NKnIKsWj7cnqsLBG-H90Z7cfSjU6WqhVO-Kut1EYsUH7jUyyRTBgZnjsVVU0nqguDdDhr8znlu_a7iSu0CIKBVrv_YuMa-uLRp1aJok4Remw4uGbl2KWKCwwappb_2MgwB-jZAh8ZGGSCyUQNGlxBnQSzxX0SOMqggyQjMrk6QCJbgAXJZ3iwCk1He6V3_pl5HdREV_EasaRbFEaVxGt206ypOqWCM1VmUlnWS5BHLaFayKsvTpIrojVwzwmLKaEoopSRa0bIilGYsZVnGs7hCMREHLtUKEmdlbHMT3uXXlBHCipvw2eXCL3KMafGGwypiDCUPN3YdPgPKvnEoJko6784wXnoVfsr7lqfwUZrc3ZtafBJ6eBh-hXt6FQolD_gevhJ-7yPmprdq_dc_VMb4fqzZ_wIAAP__ERLolg">