summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/InstPrinter/X86IntelInstPrinter.cpp
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@gmail.com>2014-12-27 18:11:00 +0000
committerCraig Topper <craig.topper@gmail.com>2014-12-27 18:11:00 +0000
commit53f75b9dc0129b1bc37c1b13bd9b4752c25ba7cf (patch)
treecd0da3472d1d8746fe2eed2fe6ea754591bcbc65 /llvm/lib/Target/X86/InstPrinter/X86IntelInstPrinter.cpp
parentacc73445b7feb1a1ed59dd10a2e0d83e1a893722 (diff)
downloadbcm5719-llvm-53f75b9dc0129b1bc37c1b13bd9b4752c25ba7cf.tar.gz
bcm5719-llvm-53f75b9dc0129b1bc37c1b13bd9b4752c25ba7cf.zip
[x86] Assert on invalid immediates in the instruction printer for cmp.ps/pd/ss/sd instead of truncating the immediate. The assembly parser and instruction selection shouldn't generate invalid immediates.
llvm-svn: 224886
Diffstat (limited to 'llvm/lib/Target/X86/InstPrinter/X86IntelInstPrinter.cpp')
-rw-r--r--llvm/lib/Target/X86/InstPrinter/X86IntelInstPrinter.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/llvm/lib/Target/X86/InstPrinter/X86IntelInstPrinter.cpp b/llvm/lib/Target/X86/InstPrinter/X86IntelInstPrinter.cpp
index f5fd9845d90..449445df7d2 100644
--- a/llvm/lib/Target/X86/InstPrinter/X86IntelInstPrinter.cpp
+++ b/llvm/lib/Target/X86/InstPrinter/X86IntelInstPrinter.cpp
@@ -90,13 +90,15 @@ static void printSSEAVXCC(int64_t Imm, raw_ostream &O) {
void X86IntelInstPrinter::printSSECC(const MCInst *MI, unsigned Op,
raw_ostream &O) {
- int64_t Imm = MI->getOperand(Op).getImm() & 0x7;
+ int64_t Imm = MI->getOperand(Op).getImm();
+ assert((Imm & 0x7) == Imm); // Ensure valid immediate.
printSSEAVXCC(Imm, O);
}
void X86IntelInstPrinter::printAVXCC(const MCInst *MI, unsigned Op,
raw_ostream &O) {
- int64_t Imm = MI->getOperand(Op).getImm() & 0x1f;
+ int64_t Imm = MI->getOperand(Op).getImm();
+ assert((Imm & 0x1f) == Imm); // Ensure valid immediate.
printSSEAVXCC(Imm, O);
}
OpenPOWER on IntegriCloud