aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Target/PIC16
diff options
context:
space:
mode:
authorSanjiv Gupta <sanjiv.gupta@microchip.com>2009-07-08 05:40:05 +0000
committerSanjiv Gupta <sanjiv.gupta@microchip.com>2009-07-08 05:40:05 +0000
commit12adb6a161ac3cda09d8056b00ba125338ec49fa (patch)
treea358ac2d48fdc3f78c2bdfd8977719a8da132f46 /lib/Target/PIC16
parent8f5253baafe027bb8939498d9eb1083febc7339a (diff)
downloadexternal_llvm-12adb6a161ac3cda09d8056b00ba125338ec49fa.zip
external_llvm-12adb6a161ac3cda09d8056b00ba125338ec49fa.tar.gz
external_llvm-12adb6a161ac3cda09d8056b00ba125338ec49fa.tar.bz2
Mark sublw_cc and subfw_cc as Terminator insns so that they are part of the terminator insns for a basic block alongwith branch insns. This way a copy is not getting inserted between cmp and branch during PHIElimination disturbing the status flags.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74992 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/PIC16')
-rw-r--r--lib/Target/PIC16/PIC16InstrInfo.td6
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/Target/PIC16/PIC16InstrInfo.td b/lib/Target/PIC16/PIC16InstrInfo.td
index a054bdc..54f2b33 100644
--- a/lib/Target/PIC16/PIC16InstrInfo.td
+++ b/lib/Target/PIC16/PIC16InstrInfo.td
@@ -375,8 +375,9 @@ def subfw_2: SUBFW<0, "subwf", subc>;
let Uses = [STATUS] in
def subfwb: SUBFW<0, "subwfb", sube>; // With Borrow.
-def subfw_cc: SUBFW<0, "subwf", PIC16Subcc>;
}
+let Defs = [STATUS], isTerminator = 1 in
+def subfw_cc: SUBFW<0, "subwf", PIC16Subcc>;
// [F] -= W ;
let mayStore = 1 in
@@ -425,8 +426,9 @@ class SUBLW<bits<6> opcode, SDNode OpNode> :
let Defs = [STATUS] in {
def sublw_1 : SUBLW<0, sub>;
def sublw_2 : SUBLW<0, subc>;
-def sublw_cc : SUBLW<0, PIC16Subcc>;
}
+let Defs = [STATUS], isTerminator = 1 in
+def sublw_cc : SUBLW<0, PIC16Subcc>;
// Call instruction.
let isCall = 1,