Set isBarrier = 1 on return instructions, as they are control barriers.
authorDan Gohman <gohman@apple.com>
Wed, 11 Nov 2009 18:11:07 +0000 (18:11 +0000)
committerDan Gohman <gohman@apple.com>
Wed, 11 Nov 2009 18:11:07 +0000 (18:11 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86851 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/Alpha/AlphaInstrInfo.td
lib/Target/Blackfin/BlackfinInstrInfo.td
lib/Target/MSP430/MSP430InstrInfo.td
lib/Target/Sparc/SparcInstrInfo.td
lib/Target/XCore/XCoreInstrInfo.td

index 81e1fb7c89317029f7fa94e51902db485961363b..8917e86fe7ef552b54dc95b52eacb46677a9cd5a 100644 (file)
@@ -391,7 +391,7 @@ def : Pat<(setune GPRC:$X, GPRC:$Y), (CMPEQi (CMPEQ GPRC:$X, GPRC:$Y), 0)>;
 def : Pat<(setune GPRC:$X, immUExt8:$Y), (CMPEQi (CMPEQ GPRC:$X, immUExt8:$Y), 0)>;
 
 
-let isReturn = 1, isTerminator = 1, Ra = 31, Rb = 26, disp = 1, Uses = [R26] in {
+let isReturn = 1, isTerminator = 1, isBarrier = 1, Ra = 31, Rb = 26, disp = 1, Uses = [R26] in {
   def RETDAG : MbrForm< 0x1A, 0x02, (ops), "ret $$31,($$26),1", s_jsr>; //Return from subroutine
   def RETDAGp : MbrpForm< 0x1A, 0x02, (ops), "ret $$31,($$26),1", [(retflag)], s_jsr>; //Return from subroutine
 }
index c952af14f1e121563e3d8860fcbb83cd732a2782..88ff85f5d4f813c74d32431b54988bf949324052 100644 (file)
@@ -174,6 +174,7 @@ def CALLp: F1<(outs), (ins P:$func, variable_ops),
 
 let isReturn     = 1,
     isTerminator = 1,
+    isBarrier    = 1,
     Uses         = [RETS] in
 def RTS: F1<(outs), (ins), "rts;", [(BfinRet)]>;
 
index cb1b2c29de7846bccd90c4033b9594b39c2ab810..c3bbfe877d993cc7cfb407c2f7b8cab120ba7114 100644 (file)
@@ -127,7 +127,7 @@ def NOP : Pseudo<(outs), (ins), "nop", []>;
 //
 
 // FIXME: Provide proper encoding!
-let isReturn = 1, isTerminator = 1 in {
+let isReturn = 1, isTerminator = 1, isBarrier = 1 in {
   def RET : Pseudo<(outs), (ins), "ret", [(MSP430retflag)]>;
 }
 
index f2f1b96f19be0d2131e9aa2da5258290670ecc19..d88d5080c6f71c684f2b0d7752c92f29d07250c1 100644 (file)
@@ -277,7 +277,7 @@ let usesCustomInserter = 1 in {   // Expanded after instruction selection.
 
 // Section A.3 - Synthetic Instructions, p. 85
 // special cases of JMPL:
-let isReturn = 1, isTerminator = 1, hasDelaySlot = 1 in {
+let isReturn = 1, isTerminator = 1, hasDelaySlot = 1, isBarrier = 1 in {
   let rd = O7.Num, rs1 = G0.Num, simm13 = 8 in
     def RETL: F3_2<2, 0b111000, (outs), (ins), "retl", [(retflag)]>;
 }
index 68e69a2b1929776061087d2d05349cd8b51030f7..4ed4ed4499a2bc3439410fb31a5bc6b1d19918bc 100644 (file)
@@ -617,7 +617,7 @@ defm EXTSP : FU6_LU6_np<"extsp">;
 let mayStore = 1 in
 defm ENTSP : FU6_LU6_np<"entsp">;
 
-let isReturn = 1, isTerminator = 1, mayLoad = 1 in {
+let isReturn = 1, isTerminator = 1, mayLoad = 1, isBarrier = 1 in {
 defm RETSP : FU6_LU6<"retsp", XCoreRetsp>;
 }
 }