summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
diff options
context:
space:
mode:
authorNick Lewycky <nicholas@mxc.ca>2011-04-20 03:19:42 +0000
committerNick Lewycky <nicholas@mxc.ca>2011-04-20 03:19:42 +0000
commit4dae63e35b889dd2766edb068faf075365e29686 (patch)
treeb99404f88a670915b978ca4f7be0b1afb79556da /llvm/lib/Target
parente473aaf540710863d85033805d5ab3b2c11960d4 (diff)
downloadbcm5719-llvm-4dae63e35b889dd2766edb068faf075365e29686.tar.gz
bcm5719-llvm-4dae63e35b889dd2766edb068faf075365e29686.zip
This should always be signed chars, so use int8_t. This fixes a miscompile when
llvm is built with unsigned chars where an immediate such as 0xff would be zero extended to 64-bits, turning "cmp $0xff,%eax" into "cmp $0xffffffffffffffff,%eax". llvm-svn: 129845
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r--llvm/lib/Target/X86/X86InstrInfo.td6
1 files changed, 3 insertions, 3 deletions
diff --git a/llvm/lib/Target/X86/X86InstrInfo.td b/llvm/lib/Target/X86/X86InstrInfo.td
index 2b928727f37..03a0b0c3aed 100644
--- a/llvm/lib/Target/X86/X86InstrInfo.td
+++ b/llvm/lib/Target/X86/X86InstrInfo.td
@@ -482,9 +482,9 @@ def X86_COND_P : PatLeaf<(i8 14)>; // alt. COND_PE
def X86_COND_S : PatLeaf<(i8 15)>;
let FastIselShouldIgnore = 1 in { // FastIsel should ignore all simm8 instrs.
- def i16immSExt8 : ImmLeaf<i16, [{ return Imm == (char)Imm; }]>;
- def i32immSExt8 : ImmLeaf<i32, [{ return Imm == (char)Imm; }]>;
- def i64immSExt8 : ImmLeaf<i64, [{ return Imm == (char)Imm; }]>;
+ def i16immSExt8 : ImmLeaf<i16, [{ return Imm == (int8_t)Imm; }]>;
+ def i32immSExt8 : ImmLeaf<i32, [{ return Imm == (int8_t)Imm; }]>;
+ def i64immSExt8 : ImmLeaf<i64, [{ return Imm == (int8_t)Imm; }]>;
}
def i64immSExt32 : ImmLeaf<i64, [{ return Imm == (int32_t)Imm; }]>;
OpenPOWER on IntegriCloud