Allow copies between GR8_ABCD_L and GR8_ABCD_H.

This fixes PR7540.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107809 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Jakob Stoklund Olesen 2010-07-07 20:33:27 +00:00
parent 894728211d
commit f2e4afd96c
2 changed files with 14 additions and 0 deletions

View File

@ -1913,6 +1913,9 @@ bool X86InstrInfo::copyRegToReg(MachineBasicBlock &MBB,
else if (SrcRC->hasSuperClass(&X86::GR32RegClass) &&
DestRC->hasSuperClass(&X86::GR32RegClass))
CommonRC = &X86::GR32RegClass;
else if (SrcRC->hasSuperClass(&X86::GR8RegClass) &&
DestRC->hasSuperClass(&X86::GR8RegClass))
CommonRC = &X86::GR8RegClass;
else
CommonRC = 0;
}

View File

@ -130,3 +130,14 @@ bb14:
bb67:
ret void
}
; Crash when trying to copy AH to AL.
; PR7540
define void @copy8bitregs() nounwind {
entry:
%div.i = sdiv i32 115200, 0
%shr8.i = lshr i32 %div.i, 8
%conv4.i = trunc i32 %shr8.i to i8
call void asm sideeffect "outb $0, ${1:w}", "{ax},N{dx},~{dirflag},~{fpsr},~{flags}"(i8 %conv4.i, i32 1017) nounwind
unreachable
}