mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-13 09:33:50 +00:00
Catch more coalescing opportunities.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76282 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
5248468473
commit
438d9900c0
@ -1235,14 +1235,17 @@ bool SimpleRegisterCoalescing::JoinCopy(CopyRec &TheCopy, bool &Again) {
|
||||
SrcReg = CopyMI->getOperand(1).getReg();
|
||||
SrcSubIdx = CopyMI->getOperand(2).getImm();
|
||||
} else if (isInsSubReg || isSubRegToReg) {
|
||||
if (CopyMI->getOperand(2).getSubReg()) {
|
||||
DstReg = CopyMI->getOperand(0).getReg();
|
||||
DstSubIdx = CopyMI->getOperand(3).getImm();
|
||||
SrcReg = CopyMI->getOperand(2).getReg();
|
||||
SrcSubIdx = CopyMI->getOperand(2).getSubReg();
|
||||
if (SrcSubIdx && SrcSubIdx != DstSubIdx) {
|
||||
// r1025 = INSERT_SUBREG r1025, r1024<2>, 2 Then r1024 has already been
|
||||
// coalesced to a larger register so the subreg indices cancel out.
|
||||
DOUT << "\tSource of insert_subreg is already coalesced "
|
||||
<< "to another register.\n";
|
||||
return false; // Not coalescable.
|
||||
}
|
||||
DstReg = CopyMI->getOperand(0).getReg();
|
||||
DstSubIdx = CopyMI->getOperand(3).getImm();
|
||||
SrcReg = CopyMI->getOperand(2).getReg();
|
||||
} else if (!tii_->isMoveInstr(*CopyMI, SrcReg, DstReg, SrcSubIdx, DstSubIdx)){
|
||||
llvm_unreachable("Unrecognized copy instruction!");
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: llvm-as < %s | llc -march=x86-64 | grep mov | count 11
|
||||
; RUN: llvm-as < %s | llc -march=x86-64 | grep mov | count 10
|
||||
|
||||
%struct.COMPOSITE = type { i8, i16, i16 }
|
||||
%struct.FILE = type { i8*, i32, i32, i16, i16, %struct.__sbuf, i32, i8*, i32 (i8*)*, i32 (i8*, i8*, i32)*, i64 (i8*, i64, i32)*, i32 (i8*, i8*, i32)*, %struct.__sbuf, %struct.__sFILEX*, i32, [3 x i8], [1 x i8], %struct.__sbuf, i32, i64 }
|
||||
@ -17,7 +17,7 @@
|
||||
%struct.metrics = type { i16, i16, i16, i16, i16 }
|
||||
%struct.rec = type { %struct.head_type }
|
||||
|
||||
define void @FontChange(i1 %foo) {
|
||||
define void @FontChange(i1 %foo) nounwind {
|
||||
entry:
|
||||
br i1 %foo, label %bb298, label %bb49
|
||||
bb49: ; preds = %entry
|
||||
|
@ -1,7 +1,7 @@
|
||||
; RUN: llvm-as < %s | llc -mtriple=x86_64-apple-darwin10 -relocation-model=pic -disable-fp-elim -color-ss-with-regs -stats -info-output-file - > %t
|
||||
; RUN: grep stackcoloring %t | grep "loads eliminated"
|
||||
; RUN: grep stackcoloring %t | grep "stack slot refs replaced with reg refs" | grep 5
|
||||
; RUN: grep asm-printer %t | grep 176
|
||||
; RUN: grep asm-printer %t | grep 175
|
||||
|
||||
type { [62 x %struct.Bitvec*] } ; type %0
|
||||
type { i8* } ; type %1
|
||||
|
Loading…
x
Reference in New Issue
Block a user