# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6 # RUN: llc -mtriple=x86_64-unknown-linux-gnu -run-pass=register-coalescer -verify-coalescing -o - %s | FileCheck %s # Regression test for https://github.com/llvm/llvm-project/issues/195587. # Register coalescer crashed coalescing a COPY from an erasable IMPLICIT_DEF # when a tied-def redef immediately followed: the pruned segment endpoint was # incorrectly added to EndPoints, causing extendToIndices to walk the CFG for # a reaching def that does not exist. --- name: coalesce_copy_from_erasable_implicit_def tracksRegLiveness: true constants: - id: 0 value: 'i32 0' alignment: 16 body: | bb.0: ; CHECK-LABEL: name: coalesce_copy_from_erasable_implicit_def ; CHECK: [[SHUFPSrmi:%[0-9]+]]:vr128 = SHUFPSrmi undef [[SHUFPSrmi]], $rip, 1, $noreg, %const.0, $noreg, 16 :: (load (s128) from constant-pool) ; CHECK-NEXT: [[SHUFPSrmi:%[0-9]+]]:vr128 = SHUFPSrri [[SHUFPSrmi]], [[SHUFPSrmi]], -24 ; CHECK-NEXT: RET 0, implicit [[SHUFPSrmi]] %0:vr128 = IMPLICIT_DEF %1:vr128 = COPY %0 %1:vr128 = SHUFPSrmi %1, $rip, 1, $noreg, %const.0, $noreg, 16 :: (load (s128) from constant-pool) %2:vr128 = COPY killed %1 %2:vr128 = SHUFPSrri %2, killed %0, -24 RET 0, implicit killed %2 ...