mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-03-19 19:31:50 +00:00
Long branch target oparands are not pc-rel.
This should fix PR6603. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102834 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
1b4a38646f
commit
650a8e49f9
@ -77,7 +77,10 @@ def memdst : Operand<i16> {
|
||||
}
|
||||
|
||||
// Branch targets have OtherVT type.
|
||||
def brtarget : Operand<OtherVT> {
|
||||
def brtarget : Operand<OtherVT>;
|
||||
|
||||
// Short jump targets have OtherVT type and are printed as pcrel imm values.
|
||||
def jmptarget : Operand<OtherVT> {
|
||||
let PrintMethod = "printPCRelImmOperand";
|
||||
}
|
||||
|
||||
@ -169,8 +172,7 @@ let isBranch = 1, isTerminator = 1 in {
|
||||
// Direct branch
|
||||
let isBarrier = 1 in {
|
||||
// Short branch
|
||||
def JMP : CJForm<0, 0,
|
||||
(outs), (ins brtarget:$dst),
|
||||
def JMP : CJForm<0, 0, (outs), (ins jmptarget:$dst),
|
||||
"jmp\t$dst",
|
||||
[(br bb:$dst)]>;
|
||||
// Long branch
|
||||
@ -183,7 +185,7 @@ let isBarrier = 1 in {
|
||||
// Conditional branches
|
||||
let Uses = [SRW] in
|
||||
def JCC : CJForm<0, 0,
|
||||
(outs), (ins brtarget:$dst, cc:$cc),
|
||||
(outs), (ins jmptarget:$dst, cc:$cc),
|
||||
"j$cc\t$dst",
|
||||
[(MSP430brcc bb:$dst, imm:$cc)]>;
|
||||
} // isBranch, isTerminator
|
||||
|
Loading…
x
Reference in New Issue
Block a user