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

    <tr>
        <th>Summary</th>
        <td>
            [AArch64][GlobalISel] Crash when selecting G_CONSTANT_FOLD_BARRIER 
        </td>
    </tr>

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

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

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

<pre>
    Assertion failed: (canReplaceReg(DstReg, SrcReg, MRI) && "Must be able to replace dst with src!"), function runOnMachineFunction, file InstructionSelect.cpp, line 190.

DstReg MI:
%11:gpr(s64) = G_CONSTANT_FOLD_BARRIER %7:gpr64sp, debug-location !516; <compiler-generated>:0

SrcReg MI:
%7:gpr64sp(s64) = G_CONSTANT i64 -3458764513820540911


test code:

; Function Attrs: norecurse nounwind willreturn memory(none)
define hidden swiftcc { i64, ptr } @"foobar"(i8 %0) local_unnamed_addr #5 !dbg !336 {
  call void @llvm.dbg.value(metadata i8 %0, metadata !343, metadata !DIExpression()), !dbg !345
  %2 = zext i8 %0 to i32, !dbg !346
 switch i32 %2, label %3 [
    i32 0, label %16
    i32 1, label %4
 i32 2, label %5
    i32 3, label %6
    i32 4, label %7
    i32 5, label %8
    i32 6, label %9
    i32 7, label %10
    i32 8, label %11
    i32 9, label %12
    i32 10, label %13
    i32 11, label %14
    i32 12, label %15
  ], !dbg !346

3: ; preds = %1
  unreachable, !dbg !346

4: ; preds = %1
  br label %16, !dbg !348

5:                                                ; preds = %1
  %const2 = bitcast i64 -3458764513820540911 to i64, !dbg !345
 %const_mat3 = add i64 %const2, 8, !dbg !345
  br label %16, !dbg !351

6:                                                ; preds = %1
  %const1 = bitcast i64 -3458764513820540911 to i64, !dbg !345
  br label %16, !dbg !362

7: ; preds = %1
  br label %16, !dbg !366

8: ; preds = %1
  br label %16, !dbg !369

9: ; preds = %1
  %const = bitcast i64 -3458764513820540911 to i64, !dbg !345
  %const_mat = add i64 %const, 7, !dbg !345
  br label %16, !dbg !372

10: ; preds = %1
  br label %16, !dbg !376

11: ; preds = %1
  br label %16, !dbg !379

12:                                               ; preds = %1
  br label %16, !dbg !382

13: ; preds = %1
  br label %16, !dbg !385

14: ; preds = %1
  br label %16, !dbg !388

15:                                               ; preds = %1
  br label %16, !dbg !391

16: ; preds = %15, %14, %13, %12, %11, %10, %9, %8, %7, %6, %5, %4, %1
  %17 = phi i64 [ 6878243912809013616, %15 ], [ 7019813714336442742, %14 ], [ 8100135556092158324, %13 ], [ 8100135556075381108, %12 ], [ 111516182736740, %11 ], [ 7016438260649258852, %10 ], [ %const_mat, %9 ], [ 1684366694, %8 ], [ 1852989797, %7 ], [ %const1, %6 ], [ %const_mat3, %5 ], [ 114776264237420, %4 ], [ 32770348699510116, %1 ], !dbg !345
  %18 = phi ptr [ inttoptr (i64 -1296925215037626269 to ptr), %15 ], [ inttoptr (i64 -1585267068834388633 to ptr), %14 ], [ inttoptr (i64 -1729382256910270464 to ptr), %13 ], [ inttoptr (i64 -1729382256910270464 to ptr), %12 ], [ inttoptr (i64 -1873497444986126336 to ptr), %11 ], [ inttoptr (i64 -1190792630155774877 to ptr), %10 ], [ inttoptr (i64 or (i64 sub (i64 ptrtoint (ptr @17 to i64), i64 32), i64 -9223372036854775808) to ptr), %9 ], [ inttoptr (i64 -2017612633061982208 to ptr), %8 ], [ inttoptr (i64 -2017612633061982208 to ptr), %7 ], [ inttoptr (i64 or (i64 sub (i64 ptrtoint (ptr @18 to i64), i64 32), i64 -9223372036854775808) to ptr), %6 ], [ inttoptr (i64 or (i64 sub (i64 ptrtoint (ptr @19 to i64), i64 32), i64 -9223372036854775808) to ptr), %5 ], [ inttoptr (i64 -1873497444986126336 to ptr), %4 ], [ inttoptr (i64 -1801439850948198400 to ptr), %1 ], !dbg !345
 %19 = insertvalue { i64, ptr } undef, i64 %17, 0, !dbg !345
  %20 = insertvalue { i64, ptr } %19, ptr %18, 1, !dbg !345
  ret { i64, ptr } %20, !dbg !345
}

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy0WN1y46gSfhp8QyUFzf-FL-x4spWqMztVmb1P6YfYOiVLLkCT2fP0p0CWY-zYs5NkfSEDDV93f920EIX3zbqzdo7EEonVrBjCpnfzobA_Z2Vf_z1feG9daPoOPxdNa2vEFhiBroru0e7aorKPdo1Ar3xIjTv83VX71tfHBwQGI5AIJEYAXwcfcGlxUbYWhx67EQHXPuCXJmywdxUCigAQmIjwPHRV0u2G7lv3tag2TWfv94NpQtNa_ND54IY09t22tgq31W4XpW3TWUwNuUVkhchifI6W4q8PiO1HEAhKEVusdw6B9pInq9kK__F09-3P738t_vzr6f7bf1ZPy8Xj48OXR4xAqHG-5D5pqm05rG_aviqSuQiooBKxJUbsruq3u6a17mZtO-uKEDn8gtiCHFs1snZiVabkbcNwIzm-YVxoJbmgTAMRnBhKj8HHZ7A-4Kqv7auK8cmWeOIUL0JwPsa4652tBuct7vqhe2m6Gr80betsGFyHt3bbu78R6K7vbAxWQqrtc2R809S17bB_aZ5DVWGkltHKSNMuOIzUCiNOEMBz35eFS9HWjY6skuhgZLF9Grqu2Nr6qahrhxEwEUmty3X8Y0xG1FEpxlXRtvhH39QRt21_bG_rcn37o2gHi0BvbSjqIhT4oOIOH8YiGGenQ6uHLz93znqfskynZEz5eGQCF5N6BAJSVP5nf4ZJS0zvhsHpIrlf5F-aUG3ijLQ8JWtR2jb2GI57cQ-O0xySTaAyl9JMyvfCKMmBRb6MZcITTJ4JVS4UmVDnQpkJTS5UuSMkl-pcSnOpyaVwQsIJR-xEnJNE-Yk4Z4q-BlesLsRwfLJUD9kS75ytfUqDuH5aPnTOFtUmFryrMPw6TOmy6J8g6WMkEZF-83dZMQJR9Z0PY4KXTagKHy7WnJT0405_a6dMYE_bIrAEWNR1AjuoiUv1xZ12lQaRlTz5r9BAP4OG625IOHZDfSAvZJZh-iNI5hjJXEeauPoUqo5T5s2MiSvV-5hWGdOUfIAglVGdDhPvhsq4pvD7efxOxTqn4xeF7TqUyKA-Utx0VtzoO6rbOxWbrJxQ-bYPYlwV3yf7BpsaMDXo1CD7xv4oIfaFTuzzV-xNEBPoAfNoN1CVdO82zbgNxBJLrTRwZihoYghlcvJFUHF4f4klVoQaTZminDHJOSh-MJEfz9OUEMqEEJIYoEIzeHXuwjwlmKaU6IPvx_MojYdhqkExqTg50HJim-RMgySSGxBai4Nt5HjecT2Y2Mx0Sc2ZlNJMJutMqgUYbZSZGFdvYU_xkpcUTyEWuZdcKQmSA1McJi8zYhkoRRjX0hhBCX0N01unjOMSSPUh6OkELZa46ULoUwd0Kq4UjDQggArCoh0gTSyuu-AOZ9eTfDiHEFqAVERqzTjTWjJ2DsGvQygwTAMIaSgBRbjk5xDs4xBwHUIrxo3inBstKcj4vXAGQa9DUEOUAckIFUIprpU6hyDXIPpDyw_l1NwFF_qmC7Gf5nJC1eElmIDjNAZHnRsDwJgCwqQWXCmh40Y7j6656hAQqkYuiKRGAxB9hqA_jKA-hRH9SYzIT7HGfJI1v9h8_yBnf7H3NKGcGS2I4ZoazQk5T9lrpSbKx_uFpvPWhfQF_dbn-9DV9nlyP72UYodc_UIm_wQ4WXAYiIUvduhFYGfDBRi4ZA1Sq7Exq-esNswUMzun0gBRAIbPNnNlOTeiFgWpCS9Bc0qELA3UVaU1GDJr5kCAEU0F4YQLfgvEyLKUTD5XRhlBECd2WzTtbbqM6N161ng_2Lnk0qhZOnP4dOEG0NkXnIQIAInVzM3jmptyWHvESdv44F9RQhPadFO3WLhqI3mMpVj-0fZl0T58ty0SK3znCr_BLxvbYZ8uw5puffEiaza4dr4JYecRWyC4R3C_bsJmKG-rfovgPmre_93sXP9fWwUE98lej-A--fP_AAAA___YxgSm">