Author: dim
Date: Thu Nov  7 06:59:09 2019
New Revision: 354429
URL: https://svnweb.freebsd.org/changeset/base/354429

Log:
  Merge commit 8e34dd941 from llvm git (by Sanjay Patel):
  
    [x86] avoid crashing when splitting AVX stores with non-simple type
    (PR43916)
  
    The store splitting transform was assuming a simple type (MVT), but
    that's not necessarily the case as shown in the test.
  
  This should fix 'Assertion failed: (isSimple() && "Expected a
  SimpleValueType!")' when building the security/openssl111 port targeting
  a CPU that supports AVX, but not AVX2, such as sandybridge.
  
  PR:           241747
  MFC after:    1 month
  X-MFC-With:   r353358

Modified:
  head/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp

Modified: head/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp
==============================================================================
--- head/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp        Thu Nov  7 
04:04:06 2019        (r354428)
+++ head/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp        Thu Nov  7 
06:59:09 2019        (r354429)
@@ -21182,12 +21182,14 @@ static SDValue splitVectorStore(StoreSDNode *Store, Se
          "Expecting 256/512-bit op");
 
   // Splitting volatile memory ops is not allowed unless the operation was not
-  // legal to begin with. We are assuming the input op is legal (this transform
-  // is only used for targets with AVX).
+  // legal to begin with. Assume the input store is legal (this transform is
+  // only used for targets with AVX). Note: It is possible that we have an
+  // illegal type like v2i128, and so we could allow splitting a volatile store
+  // in that case if that is important.
   if (Store->isVolatile())
     return SDValue();
 
-  MVT StoreVT = StoredVal.getSimpleValueType();
+  EVT StoreVT = StoredVal.getValueType();
   unsigned NumElems = StoreVT.getVectorNumElements();
   unsigned HalfSize = StoredVal.getValueSizeInBits() / 2;
   unsigned HalfAlign = (128 == HalfSize ? 16 : 32);
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to