llvm-stress: don't make vectors of x86_mmx type
authorDylan Noblesmith <nobled@dreamwidth.org>
Tue, 10 Apr 2012 22:44:49 +0000 (22:44 +0000)
committerDylan Noblesmith <nobled@dreamwidth.org>
Tue, 10 Apr 2012 22:44:49 +0000 (22:44 +0000)
LangRef.html says:
"There are no arrays, vectors or constants of this type."

This was hitting assertions when passing the -generate-x86-mmx
option.

PR12452.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154445 91177308-0d34-0410-b5e6-96231b3b80d8

tools/llvm-stress/llvm-stress.cpp

index c0950591b1d69678823d0e83cfb8452063b7649b..7da80bcff92cbdd6ee9c3366af13be71acab8ae6 100644 (file)
@@ -202,11 +202,17 @@ protected:
 
   /// Pick a random vector type.
   Type *pickVectorType(unsigned len = (unsigned)-1) {
-    Type *Ty = pickScalarType();
     // Pick a random vector width in the range 2**0 to 2**4.
     // by adding two randoms we are generating a normal-like distribution
     // around 2**3.
     unsigned width = 1<<((Ran->Rand() % 3) + (Ran->Rand() % 3));
+    Type *Ty;
+
+    // Vectors of x86mmx are illegal; keep trying till we get something else.
+    do {
+      Ty = pickScalarType();
+    } while (Ty->isX86_MMXTy());
+
     if (len != (unsigned)-1)
       width = len;
     return VectorType::get(Ty, width);