summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2004-07-31 02:10:53 +0000
committerChris Lattner <sabre@nondot.org>2004-07-31 02:10:53 +0000
commit66a13e230dba12b411c0330ef2c6d37111e5c28f (patch)
treebc52571d4f593db34e8c1b2cab22c47142414a20 /llvm/lib
parentfd4558862c1fbc4172f72ff19ad56587c23e3b84 (diff)
downloadbcm5719-llvm-66a13e230dba12b411c0330ef2c6d37111e5c28f.tar.gz
bcm5719-llvm-66a13e230dba12b411c0330ef2c6d37111e5c28f.zip
Mark barrier instructions. Execution does not fall through uncond branches
or return intructions. llvm-svn: 15356
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/X86/X86InstrInfo.td6
1 files changed, 4 insertions, 2 deletions
diff --git a/llvm/lib/Target/X86/X86InstrInfo.td b/llvm/lib/Target/X86/X86InstrInfo.td
index f0303c9393e..1cd9da8ea12 100644
--- a/llvm/lib/Target/X86/X86InstrInfo.td
+++ b/llvm/lib/Target/X86/X86InstrInfo.td
@@ -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))>;
OpenPOWER on IntegriCloud