<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/79718>79718</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [LoongArch]  Assertion `isReg() && "This is not a register operand!"'
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          DianQK
      </td>
    </tr>
</table>

<pre>
    I tried this code with `llc --mtriple=loongarch64`

```llvm
define void @foo(i1 %0) {
  br label %2

2:                                                ; preds = %32, %1
  %3 = phi i64 [ 0, %1 ], [ %27, %32 ]
  %4 = phi i64 [ 0, %1 ], [ %28, %32 ]
  %5 = phi i64 [ undef, %1 ], [ %30, %32 ]
  br label %6

6:                                                ; preds = %26, %2
  %7 = phi i64 [ %27, %26 ], [ %3, %2 ]
  %8 = phi i64 [ %28, %26 ], [ %4, %2 ]
  %9 = phi i64 [ 0, %26 ], [ %3, %2 ]
  %10 = phi i64 [ %29, %26 ], [ %4, %2 ]
  %11 = phi i64 [ %30, %26 ], [ %5, %2 ]
  br i1 %0, label %20, label %12

12: ; preds = %6
  br i1 %0, label %13, label %18

13: ; preds = %12
  br i1 %0, label %16, label %14

14:                                               ; preds = %13
  %15 = call { i64, i64 } null(i8 0, ptr null, i64 0)
  br label %16

16:                                               ; preds = %14, %13
  %17 = or i64 1, %10
  br label %20

18: ; preds = %12
  br i1 %0, label %23, label %19

19:                                               ; preds = %18
  br label %23

20: ; preds = %16, %6
  %21 = phi i64 [ %8, %6 ], [ %17, %16 ]
  %22 = phi i64 [ %10, %6 ], [ %17, %16 ]
  store i8 0, ptr null, align 1
  br label %26

23:                                               ; preds = %19, %18
  %24 = phi i64 [ 1, %19 ], [ 0, %18 ]
  %25 = phi i64 [ %11, %19 ], [ 0, %18 ]
  store i64 0, ptr null, align 8
  br label %26

26:                                               ; preds = %23, %20
  %27 = phi i64 [ %25, %23 ], [ %7, %20 ]
  %28 = phi i64 [ %24, %23 ], [ %21, %20 ]
  %29 = phi i64 [ %24, %23 ], [ %22, %20 ]
  %30 = phi i64 [ %25, %23 ], [ %11, %20 ]
  %31 = getelementptr i8, ptr null, i64 %9
  br i1 %0, label %6, label %32

32: ; preds = %26
  call void null(ptr null, ptr null, i64 0, ptr %31, i64 0)
  br label %2
}
```

I got a segmentation fault.
If assertion is turned on, I can get `isReg() && "This is not a register operand!"' failed`.

GodBolt: https://llvm.godbolt.org/z/va3YPK44e
From: https://github.com/rust-lang/rust/pull/120268

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysV8Fu4zYQ_Rr6QsQghxIlHXyI13ARbA9t0UuPtETLLGjRIKks2q8vSFmOZFObzTZBkEgi9fjmceYNJZxTbSflBuVblO9WovcnYzc7Jbrfv64Opvln84K9VbLB_qQcrk0j8TflTxhxonWNn57O3qqLlojttDFdK2x94hniBJEdIs_Xv5wMv1q_nodHjTyqTuJXoxqMMnI0BkGpKEaQEwQVRsV2mIjxwWItDlKHMZjCAmLP-IM_iG3xxcrGYcR2AZEBgi_hgo7rhYdx9HJSWPEMo3yLyTgLo3wXr_NtJFRcBxjEkTeM7McxyiWM_AGj7xp5XMBhJIkz1Y9P9eOfoR_w66Iw4V088J5KBfye-DhwF36ZhCmXYLIFmGpxJ36YCSVJKtVHqVCawmGLfPIUzsHiW6V8mdTG_JbOaoXGYnnYPf4OJmXz23KGyZKYFN4D5fPbbAaafTwrHymwqeZDFdVC62ArQfiwftS_2OGu1zp4TzlkxcXb66NhSnCjVCXRWSnRn6ilR9Zj1szpD8VkbKRDxykkaY8z26Xlz-0P3G16NQOtPiPSMsmezdydpNmPfsMnGkGyrEajuC8qOhoR5XflCZDCoeRjQM4bK3EqoYRWbYdpMvhZPgH7DJVHe3qTOyz02JhuSVVNA7y1q_Jepce2FK3tAyhXiYb6SmmUTpC5Rp9Rc3BzfDKNMN3Abm7M7hLh1tnIvVTpFpYtAQFdRHrsYt9HgiUklu5li8HRRU5sKLtWeqnlWXY-7KMqUzYa2vA7tjPvCmzWvli6fcHNBKK7x9Pk1c-nBBKePjyMMbzn9CORYnd3mp0SfMGt8VhgJ9sghPDKdPgoeu3X1wlHLJyTNg4oh31vO9lg04XlX3AtuqBjOFcr94dsUTjmVBiF4xXHCODPcP5WDndxGStb5by02FykFV2DQuIAggIfhdKyQZysp_R-Mc3WaB9EPHl_cYg9I9gj2IcT-bo1zcFovza2RbD_F8H-VbC_fvuaZXJ4fW_N-fHdVvlTf1jX5oxgb3vnn7To2us1gv0lSr6nQIBf63nVbFhTsUqs5IYWhGeEVaxcnTa0OAieF7SRdSHEgYu6qCpaZTkBIITzldoAgYxQKAklOSvXB1mWdSUg46QSuZQoI_IslF7HkIxtV8q5Xm6KqqDlKu6mi985AJ38huNg0CzfrewmvPN06FuHMqKV8-4NxSuv4wfSr-H75tnWJ5TvMH6-beb_3bJVb_XmO8rGj6bh39PFmr9lHcSN_B2CfYzvvwAAAP__Y_tFZg">