llvm-mirror/test/CodeGen/Blackfin/2009-08-15-LiveIn-SubReg.ll
Evan Cheng ddc8678b00 Coalescer should not delete extract_subreg, insert_subreg, and subreg_to_reg of
physical registers. This is especially critical for the later two since they
start the live interval of a super-register. e.g.
%DO<def> = INSERT_SUBREG %D0<undef>, %S0<kill>, 1
If this instruction is eliminated, the register scavenger will not be happy as
D0 is not defined previously.
This fixes PR5055.

llvm-svn: 82968
2009-09-28 05:28:43 +00:00

20 lines
531 B
LLVM

; RUN: llc < %s -march=bfin -verify-machineinstrs
; When joining live intervals of sub-registers, an MBB live-in list is not
; updated properly. The register scavenger asserts on an undefined register.
define i32 @foo(i8 %bar) {
entry:
switch i8 %bar, label %bb1203 [
i8 117, label %bb1204
i8 85, label %bb1204
i8 106, label %bb1204
]
bb1203: ; preds = %entry
ret i32 1
bb1204: ; preds = %entry, %entry, %entry
ret i32 2
}