On 2013-05-07 14:59, Rafael Espíndola wrote:
On 1 May 2013 00:26, Rafael Espíndola <rafael.espind...@gmail.com> wrote:
This is now

http://llvm.org/bugs/show_bug.cgi?id=15882

And it got fixed! :-)

It just missed 3.3 branching, but I will make sure it gets ported.

Okay, can the original posters that suffered from the crash, please try
the attached patch on their -current source, then try to rebuild the
Firefox port, and check if the crash has disappeared?

If you just want to incrementally build clang, you can do:

  cd /usr/src/lib/clang/libllvmvectorize
  make
  cd /usr/src/usr.bin/clang/clang
  make
  sudo make install

-Dimitry
Index: contrib/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
===================================================================
--- contrib/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp	(revision 250331)
+++ contrib/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp	(working copy)
@@ -214,7 +214,7 @@ class InnerLoopVectorizer {
   /// This function adds 0, 1, 2 ... to each vector element, starting at zero.
   /// If Negate is set then negative numbers are added e.g. (0, -1, -2, ...).
   /// The sequence starts at StartIndex.
-  Value *getConsecutiveVector(Value* Val, unsigned StartIdx, bool Negate);
+  Value *getConsecutiveVector(Value* Val, int StartIdx, bool Negate);
 
   /// When we go over instructions in the basic block we rely on previous
   /// values within the current basic block or on loop invariant values.
@@ -771,7 +771,7 @@ Value *InnerLoopVectorizer::getBroadcastInstrs(Val
   return Shuf;
 }
 
-Value *InnerLoopVectorizer::getConsecutiveVector(Value* Val, unsigned StartIdx,
+Value *InnerLoopVectorizer::getConsecutiveVector(Value* Val, int StartIdx,
                                                  bool Negate) {
   assert(Val->getType()->isVectorTy() && "Must be a vector");
   assert(Val->getType()->getScalarType()->isIntegerTy() &&
@@ -784,8 +784,8 @@ Value *InnerLoopVectorizer::getBroadcastInstrs(Val
 
   // Create a vector of consecutive numbers from zero to VF.
   for (int i = 0; i < VLen; ++i) {
-    int Idx = Negate ? (-i): i;
-    Indices.push_back(ConstantInt::get(ITy, StartIdx + Idx));
+    int64_t Idx = Negate ? (-i) : i;
+    Indices.push_back(ConstantInt::get(ITy, StartIdx + Idx, Negate));
   }
 
   // Add the consecutive indices to the vector value.
@@ -1928,7 +1928,8 @@ InnerLoopVectorizer::vectorizeBlockInLoop(LoopVect
           // After broadcasting the induction variable we need to make the
           // vector consecutive by adding  ... -3, -2, -1, 0.
           for (unsigned part = 0; part < UF; ++part)
-            Entry[part] = getConsecutiveVector(Broadcasted, -VF * part, true);
+            Entry[part] = getConsecutiveVector(Broadcasted, -(int)VF * part,
+                                               true);
           continue;
         }
 
_______________________________________________
freebsd-ports@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to "freebsd-ports-unsubscr...@freebsd.org"

Reply via email to