summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
diff options
context:
space:
mode:
authorSanjay Patel <spatel@rotateright.com>2017-10-11 18:24:21 +0000
committerSanjay Patel <spatel@rotateright.com>2017-10-11 18:24:21 +0000
commit6c0aef77aacfe46aac81a56cb09090b853d9ff26 (patch)
treee7e7e8d0d35ca4daad8dd391fb2331acbbcc8083 /llvm/lib/Target
parentf03384dce7cff4b250c4814380c03ea6440ebd3b (diff)
downloadbcm5719-llvm-6c0aef77aacfe46aac81a56cb09090b853d9ff26.tar.gz
bcm5719-llvm-6c0aef77aacfe46aac81a56cb09090b853d9ff26.zip
[x86] avoid infinite loop from SoftenFloatOperand (PR34866)
Legalization of fp128 assumes things that we should have asserts for, so that's another potential improvement. Differential Revision: https://reviews.llvm.org/D38771 llvm-svn: 315485
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r--llvm/lib/Target/X86/X86ISelLowering.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index f95603e9fef..28c4968247a 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -35214,6 +35214,11 @@ static SDValue combineVectorSizedSetCCEquality(SDNode *SetCC, SelectionDAG &DAG,
if (!OpVT.isScalarInteger() || OpSize < 128 || isNullConstant(Y))
return SDValue();
+ // Bail out if we know that this is not really just an oversized integer.
+ if (peekThroughBitcasts(X).getValueType() == MVT::f128 ||
+ peekThroughBitcasts(Y).getValueType() == MVT::f128)
+ return SDValue();
+
// TODO: Use PXOR + PTEST for SSE4.1 or later?
// TODO: Add support for AVX-512.
EVT VT = SetCC->getValueType(0);
OpenPOWER on IntegriCloud