diff options
| author | Chris Lattner <sabre@nondot.org> | 2004-07-31 02:10:53 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2004-07-31 02:10:53 +0000 |
| commit | 66a13e230dba12b411c0330ef2c6d37111e5c28f (patch) | |
| tree | bc52571d4f593db34e8c1b2cab22c47142414a20 /llvm/lib | |
| parent | fd4558862c1fbc4172f72ff19ad56587c23e3b84 (diff) | |
| download | bcm5719-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.td | 6 |
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))>; |

