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

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

    <tr>
      <th>Labels</th>
      <td>
            backend:AArch64,
            globalisel
      </td>
    </tr>

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

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

<pre>
    The register classes into and out of a G_CONSTANT_FOLD_BARRIER are different in this example, causing an assert when selecting the instruction:
https://godbolt.org/z/G8443GYjx
```
; ModuleID = 'reduced.bc'
target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
target triple = "aarch64-unknown-linux-gnu"

define fastcc i1 @_ZL15gimple_simplifyP15gimple_match_opPP6gimplePFP9tree_nodeS5_E11code_helperS5_S5_S5_S5_(i1 %cond, i1 %cond1) {
entry:
  br i1 %cond, label %sw.bb9, label %sw.bb34

sw.bb9:                                           ; preds = %entry
  br i1 %cond1, label %sw.bb72.i, label %sw.bb5.i

sw.bb5.i: ; preds = %sw.bb9
  br i1 %cond, label %common.ret, label %land.rhs.i

land.rhs.i: ; preds = %sw.bb5.i
  %call45.i = tail call i32 (ptr, ptr, ...) @fprintf(ptr null, ptr null, ptr null, i32 1, ptr null, i32 145185)
 br label %common.ret

common.ret: ; preds = %sw.bb34, %sw.bb72.i, %land.rhs.i, %sw.bb5.i
  ret i1 false

sw.bb72.i:                                        ; preds = %sw.bb9
  %call105.i = tail call i32 (ptr, ptr, ...) @fprintf(ptr null, ptr null, ptr null, i32 0, ptr null, i32 145213)
  br label %common.ret

sw.bb34:                                          ; preds = %entry
  %call133.i = tail call i32 (ptr, ptr, ...) @fprintf(ptr null, ptr null, ptr null, i32 0, ptr null, i32 146354)
  br label %common.ret
}

declare i32 @fprintf(ptr, ptr, ...)
```

@aemerson any ideas?
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzEVk9z4rgT_TTiosJl_TP2gYMThlSq5jeTSnL57YWSrcbWjJAoSZ4k--m3ZJMEQrKTvexSxkKPdr_XrzFtGYLuLMASiQskVjM5xN75pZK_YNd5ADtrnHpa3veAPXQ6RPC4NTIECFjb6LC0CrshYrfFEl9tLr9_u7uvv91v1t-_rjYX9e3t9ZdbLD1gpbdb8GAj1hbHXgcMj3K3N4DoJW7lELTtsLQ45fYRP_RgcQADbUxfxB6wtiH6oY3aWcRqlK9QXvcx7kPa0TWi686pxpmYOd8huv4T0fVVyTm7-v-PxykcFfnhmLbsAv_PqcHA9QojtsKILjyooQWVNS2iiyksSt9BxEpGaeRTqnaKpTDfIVbDXJeI1enN6FyTArF6PKVdwRGrCz7XhKYAQsu5ZXTC7hJG6QlJ9Hpv4JlASt_2BZ8P9qd1D3ZutB0e550dXi6bzgq22gLeyhDbFmuCEc83f3wlotPJ4k1Ii94-3bwgOxnbfuP2NzfFhNysb6roATbWKbgTmy-EtE7BpgezB38nNi8HomVioKJ1VqXuve4IohVGi4tJFdjon15ahXHj8emFRjZgEhAesqapziHGj6s8RLEaf_6VWrz3oMLBUjGJek8ROedf0EyfoyLTZ7ISxupzuoPm3zrQut3O2cxDPIGNtCrzfThlPEI_5HwRicf00hguMj2GRKkNTgjWjGJEy330ifWwZFk2tpHn273XNm6nCGwHYw5h735Oyci7IBekFIg-29D4d-s-KvAI_bBAxlP-t5069ewo4MgPDzG1YStNgLNGjok-_xP7TcMP1pP8X_A-_8B7Stir958w_9ndf3Kf_f1t9uwCY_-ZCwUT_LMuLFan_62tSQNsVPpG0Znm98fMdOa5hB344CyW9glrBTIgtp6pJVMVq-QMlqSoCCmqKuezfkkWBaFVCbIqS9EKVRUNLRccmGDlli7ETC9pTlle5pwsqMh5RhrF26ZalLlqiryliOewk9pkxvzapak40yEMsCw4Z2Q2GhDGyU9pI9ufYBVidV2PMydNGHqJKO2Ma6TRAUyCxGrmlyndvBm6gHhudIjhlSDqaManiec0YoXExdWY4_oODBIrfOll6N9O-A-eHWaDN8s3U17Hfmiy1u0QXSfiwzLfe_cD2ojoeiwzILoeK_0rAAD__9PZip8">