Mark barrier instructions. Execution does not fall through uncond branches
authorChris Lattner <sabre@nondot.org>
Sat, 31 Jul 2004 02:10:53 +0000 (02:10 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 31 Jul 2004 02:10:53 +0000 (02:10 +0000)
or return intructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15356 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86InstrInfo.td

index f0303c9393e04e53273c60396d51a78f7260751e..1cd9da8ea12037a8285eebcfea43c90dbce464e3 100644 (file)
@@ -169,19 +169,21 @@ def IMPLICIT_DEF     : I<"IMPLICIT_DEF",     0, Pseudo>;
 let isTerminator = 1 in
   let Defs = [FP0, FP1, FP2, FP3, FP4, FP5, FP6] in
     def FP_REG_KILL    : I<"FP_REG_KILL",      0, Pseudo>;
+
 //===----------------------------------------------------------------------===//
 //  Control Flow Instructions...
 //
 
 // Return instruction...
-let isTerminator = 1, isReturn = 1 in
+let isTerminator = 1, isReturn = 1, isBarrier = 1 in
   def RET : I<"ret", 0xC3, RawFrm>, Pattern<(retvoid)>;
 
 // All branches are RawFrm, Void, Branch, and Terminators
 let isBranch = 1, isTerminator = 1 in
   class IBr<string name, bits<8> opcode> : I<name, opcode, RawFrm>;
 
-def JMP : IBr<"jmp", 0xE9>, Pattern<(br basicblock)>;
+let isBarrier = 1 in
+  def JMP : IBr<"jmp", 0xE9>, Pattern<(br basicblock)>;
 def JB  : IBr<"jb" , 0x82>, TB;
 def JAE : IBr<"jae", 0x83>, TB;
 def JE  : IBr<"je" , 0x84>, TB, Pattern<(isVoid (unspec1 basicblock))>;