[llvm-commits] [poolalloc] r117217 - in /poolalloc/trunk: include/dsa/DSSupport.h lib/DSA/DSGraph.cpp lib/DSA/DataStructure.cpp lib/DSA/Local.cpp test/dsa/local/arrayPointers.ll test/dsa/local/arrayPointers1.ll test/dsa/local/arrayPointers2.ll test/dsa/local/arrayPointers3.ll test/dsa/local/arrays1.ll test/dsa/local/arrays2.ll test/dsa/local/arrays3.ll

Arushi Aggarwal aggarwa4 at illinois.edu
Sat Oct 23 17:59:55 PDT 2010


Author: aggarwa4
Date: Sat Oct 23 19:59:54 2010
New Revision: 117217

URL: http://llvm.org/viewvc/llvm-project?rev=117217&view=rev
Log: (empty)

Modified:
    poolalloc/trunk/include/dsa/DSSupport.h
    poolalloc/trunk/lib/DSA/DSGraph.cpp
    poolalloc/trunk/lib/DSA/DataStructure.cpp
    poolalloc/trunk/lib/DSA/Local.cpp
    poolalloc/trunk/test/dsa/local/arrayPointers.ll
    poolalloc/trunk/test/dsa/local/arrayPointers1.ll
    poolalloc/trunk/test/dsa/local/arrayPointers2.ll
    poolalloc/trunk/test/dsa/local/arrayPointers3.ll
    poolalloc/trunk/test/dsa/local/arrays1.ll
    poolalloc/trunk/test/dsa/local/arrays2.ll
    poolalloc/trunk/test/dsa/local/arrays3.ll

Modified: poolalloc/trunk/include/dsa/DSSupport.h
URL: http://llvm.org/viewvc/llvm-project/poolalloc/trunk/include/dsa/DSSupport.h?rev=117217&r1=117216&r2=117217&view=diff
==============================================================================
--- poolalloc/trunk/include/dsa/DSSupport.h (original)
+++ poolalloc/trunk/include/dsa/DSSupport.h Sat Oct 23 19:59:54 2010
@@ -162,6 +162,7 @@
   DSNodeHandle    RetVal;             // Returned value
   DSNodeHandle    VarArgVal;          // Merged var-arg val
   std::vector<DSNodeHandle> CallArgs; // The pointer arguments
+  std::vector<CallSite> MappedSites;  // The merged callsites
 
   static void InitNH(DSNodeHandle &NH, const DSNodeHandle &Src,
                      const std::map<const DSNode*, DSNode*> &NodeMap) {
@@ -225,6 +226,9 @@
     CallArgs.resize(FromCall.CallArgs.size());
     for (unsigned i = 0, e = FromCall.CallArgs.size(); i != e; ++i)
       InitNH(CallArgs[i], FromCall.CallArgs[i], NodeMap);
+    MappedSites.resize(FromCall.MappedSites.size());
+    for (unsigned i = 0, e = FromCall.MappedSites.size(); i != e; ++i)
+      MappedSites[i] = FromCall.MappedSites[i];
   }
 
   const DSCallSite &operator=(const DSCallSite &RHS) {
@@ -234,6 +238,7 @@
     RetVal   = RHS.RetVal;
     VarArgVal = RHS.VarArgVal;
     CallArgs = RHS.CallArgs;
+    MappedSites = RHS.MappedSites;
     return *this;
   }
 
@@ -261,6 +266,8 @@
   }
 
   unsigned getNumPtrArgs() const { return CallArgs.size(); }
+  
+  unsigned getNumMappedSites() const { return MappedSites.size(); }
 
   DSNodeHandle &getPtrArg(unsigned i) {
     assert(i < CallArgs.size() && "Argument to getPtrArgNode is out of range!");
@@ -270,6 +277,15 @@
     assert(i < CallArgs.size() && "Argument to getPtrArgNode is out of range!");
     return CallArgs[i];
   }
+  
+  CallSite &getMappedCallSite(unsigned i) {
+    assert(i < MappedSites.size() && "Argument to getMappedCallSite is out of range!");
+    return MappedSites[i];
+  }
+  const CallSite &getMappedCallSite(unsigned i) const {
+    assert(i < MappedSites.size() && "Argument to getMappedCallSite is out of range!");
+    return MappedSites[i];
+  }
 
   void addPtrArg(const DSNodeHandle &NH) {
     CallArgs.push_back(NH);
@@ -283,6 +299,7 @@
       std::swap(CalleeN, CS.CalleeN);
       std::swap(CalleeF, CS.CalleeF);
       std::swap(CallArgs, CS.CallArgs);
+      std::swap(MappedSites, CS.MappedSites);
     }
   }
 
@@ -300,6 +317,10 @@
 
     for (unsigned a = MinArgs, e = CS.getNumPtrArgs(); a != e; ++a)
       CallArgs.push_back(CS.getPtrArg(a));
+
+    MappedSites.push_back(CS.getCallSite());
+    for (unsigned a = 0, e = CS.MappedSites.size(); a != e; ++a)
+      MappedSites.push_back(CS.MappedSites[a]);
   }
 
   /// markReachableNodes - This method recursively traverses the specified

Modified: poolalloc/trunk/lib/DSA/DSGraph.cpp
URL: http://llvm.org/viewvc/llvm-project/poolalloc/trunk/lib/DSA/DSGraph.cpp?rev=117217&r1=117216&r2=117217&view=diff
==============================================================================
--- poolalloc/trunk/lib/DSA/DSGraph.cpp (original)
+++ poolalloc/trunk/lib/DSA/DSGraph.cpp Sat Oct 23 19:59:54 2010
@@ -39,7 +39,7 @@
 
 #define COLLAPSE_ARRAYS_AGGRESSIVELY 0
 namespace {
-  //STATISTIC (NumCallNodesMerged , "Number of call nodes merged");
+  STATISTIC (NumCallNodesMerged , "Number of call nodes merged");
   STATISTIC (NumDNE             , "Number of nodes removed by reachability");
   STATISTIC (NumTrivialDNE      , "Number of nodes trivially removed");
   STATISTIC (NumTrivialGlobalDNE, "Number of globals trivially removed");
@@ -856,7 +856,6 @@
 // clients can query call graph, means we need callee information for all the 
 // call sites. And hence, we should not remove them without ever inlining them
 
-#if 0
 static void removeIdenticalCalls(std::list<DSCallSite> &Calls) {
   // Remove trivially identical function calls
   Calls.sort();  // Sort by callee as primary key!
@@ -864,10 +863,10 @@
   // Scan the call list cleaning it up as necessary...
   DSNodeHandle LastCalleeNode;
 #if 0
-  Function *LastCalleeFunc = 0;
+  //Function *LastCalleeFunc = 0;
   unsigned NumDuplicateCalls = 0;
 #endif
-  bool LastCalleeContainsExternalFunction = false;
+  //bool LastCalleeContainsExternalFunction = false;
 
   unsigned NumDeleted = 0;
   for (std::list<DSCallSite>::iterator I = Calls.begin(), E = Calls.end();
@@ -878,6 +877,7 @@
     if (!CS.isIndirectCall()) {
       LastCalleeNode = 0;
     } else {
+      
       DSNode *Callee = CS.getCalleeNode();
 
       // If the Callee is a useless edge, this must be an unreachable call site,
@@ -894,7 +894,7 @@
       // if the callee contains an external function, it will never be
       // resolvable, just merge the call sites.
       if (!LastCalleeNode.isNull() && LastCalleeNode.getNode() == Callee) {
-        LastCalleeContainsExternalFunction = Callee->isExternFuncNode();
+      //  LastCalleeContainsExternalFunction = Callee->isExternFuncNode();
 
         std::list<DSCallSite>::iterator PrevIt = OldIt;
         --PrevIt;
@@ -972,8 +972,8 @@
     }
 #endif
 
-    if (I != Calls.end() && CS == *I) {
-      LastCalleeNode = 0;
+    if (I != Calls.end() && CS == *I && I->isDirectCall()) {
+     // LastCalleeNode = 0;
       Calls.erase(OldIt);
       ++NumDeleted;
       continue;
@@ -992,8 +992,8 @@
 
       // If this call site is now the same as the previous one, we can delete it
       // as a duplicate.
-      if (*OldIt == *CI) {
-        DEBUG(errs() << "Deleteing " << CI->getCallSite().getInstruction() << "\n");
+      if (*OldIt == *CI && CI->isDirectCall() && OldIt->isDirectCall()) {
+      //  errs() << "Deleteing " << CI->getCallSite().getInstruction() << "\n";
         Calls.erase(CI);
         CI = OldIt;
         ++NumDeleted;
@@ -1008,8 +1008,6 @@
   if (NumDeleted)
     DEBUG(errs() << "Merged " << NumDeleted << " call nodes.\n");
 }
-#endif
-
 // removeTriviallyDeadNodes - After the graph has been constructed, this method
 // removes all unreachable nodes that are created because they got merged with
 // other nodes in the graph.  These nodes will all be trivially unreachable, so
@@ -1086,9 +1084,9 @@
     }
   }
 #if 0
+#endif
   removeIdenticalCalls(FunctionCalls);
   removeIdenticalCalls(AuxFunctionCalls);
-#endif
 }
 
 // CanReachAliveNodes - Simple graph walker that recursively traverses the graph
@@ -1404,7 +1402,12 @@
   // Modify the entry in the node map so that the DSNode from the first
   // DSNodeHandle is mapped to the second DSNodeHandle.
   //
-  Entry.setTo(N2, NH2.getOffset()-NH1.getOffset());
+  assert(((signed int)(NH2.getOffset()-NH1.getOffset())>=0) && " Underflow error ");
+  if(NH2.getOffset() >= NH1.getOffset()) {
+    Entry.setTo(N2, NH2.getOffset()-NH1.getOffset());
+  } else {
+    Entry.setTo(N2, NH1.getOffset());
+  }
 
   //
   // The two DSNodes that we have could be strucures with outgoing links to
@@ -1682,6 +1685,15 @@
           DCG.insert(CS, *Fi);
         else
           ++NumFiltered;
+     for (unsigned i = 0; i < ii->getNumMappedSites(); i++) {
+       CallSite MCS = ii->getMappedCallSite(i);
+       for (std::vector<const Function*>::iterator Fi = MaybeTargets.begin(),
+             Fe = MaybeTargets.end(); Fi != Fe; ++Fi)
+          if (!filter || functionIsCallable(MCS, *Fi))
+            DCG.insert(MCS, *Fi);
+          else
+            ++NumFiltered;
+       }
     }
   }
 }

Modified: poolalloc/trunk/lib/DSA/DataStructure.cpp
URL: http://llvm.org/viewvc/llvm-project/poolalloc/trunk/lib/DSA/DataStructure.cpp?rev=117217&r1=117216&r2=117217&view=diff
==============================================================================
--- poolalloc/trunk/lib/DSA/DataStructure.cpp (original)
+++ poolalloc/trunk/lib/DSA/DataStructure.cpp Sat Oct 23 19:59:54 2010
@@ -340,9 +340,6 @@
   if (Offset >= getSize()) growSize(Offset+TD.getTypeAllocSize(NewTy));
   if (Offset >= getSize() && NewTy->isVoidTy()) growSize(Offset + 1);
 
-
-  if (Offset >= getSize()) growSize(Offset+1);
-
   TyMap[Offset] = getParentGraph()->getTypeSS().getOrCreate(TyMap[Offset], NewTy);
 
   // check if the types merged have both int and pointer at the same offset,
@@ -359,8 +356,6 @@
     if((*ni)->isIntegerTy()) {
       integerTy = true;
     }
-    const TargetData &TD = getParentGraph()->getTargetData();
-    if ((Offset + TD.getTypeAllocSize(*ni))>= getSize()) growSize(Offset+TD.getTypeAllocSize(*ni));
   }
 
   if(pointerTy && integerTy) {
@@ -403,6 +398,8 @@
     if((*ni)->isIntegerTy()) {
       integerTy = true;
     }
+    const TargetData &TD = getParentGraph()->getTargetData();
+    if ((Offset + TD.getTypeAllocSize(*ni))>= getSize()) growSize(Offset+TD.getTypeAllocSize(*ni));
   }
   if(pointerTy && integerTy) {
     if(!hasLink(Offset)) {
@@ -514,7 +511,28 @@
     NSize = NH.getNode()->getSize();
     NOffset = NH.getOffset();
     assert(NOffset == 0 && NSize == 1);
-  } 
+  }
+
+  if((NH.getNode()->isArrayNode() && !CurNodeH.getNode()->isArrayNode()) ||
+  (!NH.getNode()->isArrayNode() && CurNodeH.getNode()->isArrayNode())) {
+    if(NH.getNode()->getSize() != 0 && CurNodeH.getNode()->getSize() != 0
+       && (NH.getNode()->getSize() != CurNodeH.getNode()->getSize())){
+      CurNodeH.getNode()->foldNodeCompletely();
+      NH.getNode()->foldNodeCompletely();
+      NSize = NH.getNode()->getSize();
+  //    N = NH.getNode();
+      NOffset = NH.getOffset();
+    }
+  }
+  if ((CurNodeH.getNode()->isArrayNode() && NH.getNode()->isArrayNode()) &&
+      (CurNodeH.getNode()->getSize() != NH.getNode()->getSize())) {
+      CurNodeH.getNode()->foldNodeCompletely();
+      NH.getNode()->foldNodeCompletely();
+      NSize = NH.getNode()->getSize();
+    //  N = NH.getNode();
+      NOffset = NH.getOffset();
+  }
+ 
 
   DSNode *N = NH.getNode();
   if (CurNodeH.getNode() == N || N == 0) return;
@@ -773,6 +791,18 @@
       if (DN->getSize() < SN->getSize())
         DN->growSize(SN->getSize());
 
+      if ((SN->isArrayNode() && !DN->isArrayNode()) ||
+        (!SN->isArrayNode() && DN->isArrayNode())) {
+        DN->foldNodeCompletely();
+        DN = NH.getNode();
+     }
+     if ((SN->isArrayNode() && DN->isArrayNode()) &&
+        (SN->getSize() != DN->getSize())) {
+        DN->foldNodeCompletely();
+        DN = NH.getNode();
+     }
+
+
       // Merge the type entries of the two nodes together...
       if (!DN->isNodeCompletelyFolded())
           DN->mergeTypeInfo(SN, NH.getOffset() - SrcNH.getOffset());

Modified: poolalloc/trunk/lib/DSA/Local.cpp
URL: http://llvm.org/viewvc/llvm-project/poolalloc/trunk/lib/DSA/Local.cpp?rev=117217&r1=117216&r2=117217&view=diff
==============================================================================
--- poolalloc/trunk/lib/DSA/Local.cpp (original)
+++ poolalloc/trunk/lib/DSA/Local.cpp Sat Oct 23 19:59:54 2010
@@ -531,10 +531,10 @@
   //        What if the array is indexed using a larger index than its declared
   //        size?  Does the LLVM verifier catch such issues?
   //
-  const PointerType *PTy = cast<PointerType > (GEP.getOperand(0)->getType());
+  /*const PointerType *PTy = cast<PointerType > (GEP.getOperand(0)->getType());
   const Type *CurTy = PTy->getElementType();
   if (TD.getTypeAllocSize(CurTy) + Value.getOffset() > Value.getNode()->getSize())
-    Value.getNode()->growSize(TD.getTypeAllocSize(CurTy) + Value.getOffset());
+    Value.getNode()->growSize(TD.getTypeAllocSize(CurTy) + Value.getOffset());*/
 
 #if 0
   // Handle the pointer index specially...
@@ -586,9 +586,15 @@
       int FieldNo = CUI->getSExtValue();
       // increment the offset by the actual byte offset being accessed
       Offset += (unsigned)TD.getStructLayout(STy)->getElementOffset(FieldNo);
-      
+     
+      if(!Value.getNode()->isArrayNode() || Value.getNode()->getSize() <= 1){
+        if (TD.getTypeAllocSize(STy) + Value.getOffset() > Value.getNode()->getSize())
+          Value.getNode()->growSize(TD.getTypeAllocSize(STy) + Value.getOffset());
+      }
+
     } else if(const ArrayType *ATy = dyn_cast<ArrayType>(*I)) {
        // indexing into an array.
+     Value.getNode()->setArrayMarker();
      const Type *CurTy = ATy->getElementType();
 
       if(!isa<ArrayType>(CurTy) &&
@@ -609,7 +615,6 @@
         }
      }
 // indexing into an array.
-      Value.getNode()->setArrayMarker();
       
       // Find if the DSNode belongs to the array
       // If not fold.
@@ -621,8 +626,10 @@
         Value.getNode();
         Offset = 0;
         break;
-      } 
-    } else if (isa<PointerType>(*I)) {
+      }
+    } else if (const PointerType *PtrTy = dyn_cast<PointerType>(*I)) { 
+      const Type *CurTy = PtrTy->getElementType();
+
       //
       // Unless we're advancing the pointer by zero bytes via array indexing,
       // fold the node (i.e., mark it type-unknown) and indicate that we're
@@ -635,10 +642,32 @@
       if (!isa<Constant>(I.getOperand()) ||
           !cast<Constant>(I.getOperand())->isNullValue()) {
         Value.getNode()->setArrayMarker();
-        Value.getNode()->foldNodeCompletely();
-        Value.getNode();
-        Offset = 0;
-        break;
+
+
+        if(!isa<ArrayType>(CurTy) && Value.getNode()->getSize() <= 1){
+          Value.getNode()->growSize(TD.getTypeAllocSize(CurTy));
+        }
+        if(CurTy->isVoidTy()) {
+          Value.getNode()->growSize(1);
+        }
+        if(isa<ArrayType>(CurTy) && Value.getNode()->getSize() <= 1){
+          const Type *ETy = (cast<ArrayType>(CurTy))->getElementType();
+          while(isa<ArrayType>(ETy)) {
+            ETy = (cast<ArrayType>(ETy))->getElementType();
+          }
+          Value.getNode()->growSize(TD.getTypeAllocSize(ETy));
+          if(ETy->isVoidTy()) {
+            Value.getNode()->growSize(1);
+          }
+        }
+        if(Value.getOffset() || Offset != 0
+         || (!isa<ArrayType>(CurTy)
+          && (Value.getNode()->getSize() != TD.getTypeAllocSize(CurTy)))) {
+          Value.getNode()->foldNodeCompletely();
+          Value.getNode();
+          Offset = 0;
+          break;
+        }
       }
     }
 
@@ -1048,7 +1077,7 @@
   // Ensure a type-record exists...
   //
   DSNode *NHN = NH.getNode();
-  NHN->mergeTypeInfo(Ty, NH.getOffset());
+  //NHN->mergeTypeInfo(Ty, NH.getOffset());
 
   //
   // If we've found something of pointer type, create or find its DSNode and
@@ -1056,6 +1085,8 @@
   // pointer we've just found.
   //
   if (isa<PointerType>(Ty)) {
+    NHN->setArrayMarker();
+  //  NHN->mergeTypeInfo(Ty, NH.getOffset());
     NH.addEdgeTo(getValueDest(C));
     return;
   }
@@ -1086,8 +1117,11 @@
     // end with a zero-length array ([0 x sbyte]); this is a common C idiom
     // that continues to plague the world.
     //
+    //NHN->mergeTypeInfo(Ty, NH.getOffset());
+
     const StructLayout *SL = TD.getStructLayout(cast<StructType>(Ty));
-    for (unsigned i = 0, e = CS->getNumOperands(); i != e; ++i) {
+   
+     for (unsigned i = 0, e = CS->getNumOperands(); i != e; ++i) {
       DSNode *NHN = NH.getNode();
       if (SL->getElementOffset(i) < SL->getSizeInBytes()) {
         //
@@ -1102,7 +1136,7 @@
         // analyzing.
         //
         unsigned offset = NH.getOffset()+(unsigned)SL->getElementOffset(i);
-
+        NHN->mergeTypeInfo(ElementType, offset);
         //
         // Create a new DSNodeHandle.  This DSNodeHandle will point to the same
         // DSNode as the one we're constructing for our caller; however, it
@@ -1149,15 +1183,23 @@
   // Ensure that the DSNode is large enough to hold the new constant that we'll
   // be adding to it.
   //
-  const Type * ElementType = GV->getType()->getElementType();
-  unsigned requiredSize = TD.getTypeAllocSize(ElementType) + NH.getOffset();
-  if (NH.getNode()->getSize() < requiredSize)
-    NH.getNode()->growSize (requiredSize);
+ const Type * ElementType = GV->getType()->getElementType();
+ while(const ArrayType *ATy = dyn_cast<ArrayType>(ElementType)) {
+    ElementType = ATy->getElementType();
+  }
+  if(!NH.getNode()->isNodeCompletelyFolded()) {
+    unsigned requiredSize = TD.getTypeAllocSize(ElementType) + NH.getOffset();
+    if (NH.getNode()->getSize() < requiredSize){
+      NH.getNode()->growSize (requiredSize);
+    }
+  }
 
   //
   // Do the actual merging in of the constant initializer.
   //
-  MergeConstantInitIntoNode(NH, ElementType, GV->getInitializer());
+//  MergeConstantInitIntoNode(NH, ElementType, GV->getInitializer());
+  MergeConstantInitIntoNode(NH, GV->getType()->getElementType(), GV->getInitializer());
+
 }
 
 void GraphBuilder::mergeExternalGlobal(GlobalVariable *GV) {

Modified: poolalloc/trunk/test/dsa/local/arrayPointers.ll
URL: http://llvm.org/viewvc/llvm-project/poolalloc/trunk/test/dsa/local/arrayPointers.ll?rev=117217&r1=117216&r2=117217&view=diff
==============================================================================
--- poolalloc/trunk/test/dsa/local/arrayPointers.ll (original)
+++ poolalloc/trunk/test/dsa/local/arrayPointers.ll Sat Oct 23 19:59:54 2010
@@ -1,7 +1,7 @@
 ;2D array using pointers. Should be folded
 
-;RUN: dsaopt %s -dsa-local -analyze -check-type=main:array:0,FoldedVOID
-;RUN: dsaopt %s -dsa-local -analyze -check-type=main:array:0:0,FoldedVOID
+;RUN: dsaopt %s -dsa-local -analyze -check-type=main:array:0,0:i32*Array
+;RUN: dsaopt %s -dsa-local -analyze -check-type=main:array:0:0,0:i32Array
 ;RUN: dsaopt %s -dsa-local -analyze -check-type=main:array,0:i32**
 
 ; ModuleID = 'arrayPointers.bc'

Modified: poolalloc/trunk/test/dsa/local/arrayPointers1.ll
URL: http://llvm.org/viewvc/llvm-project/poolalloc/trunk/test/dsa/local/arrayPointers1.ll?rev=117217&r1=117216&r2=117217&view=diff
==============================================================================
--- poolalloc/trunk/test/dsa/local/arrayPointers1.ll (original)
+++ poolalloc/trunk/test/dsa/local/arrayPointers1.ll Sat Oct 23 19:59:54 2010
@@ -1,7 +1,7 @@
 ; 2D array as array of pointers. Array should not be folded.
 
 ;RUN: dsaopt %s -dsa-local -analyze -check-type=main:array,0:i32*Array
-;RUN: dsaopt %s -dsa-local -analyze -check-type=main:array:0,FoldedVOID
+;RUN: dsaopt %s -dsa-local -analyze -check-type=main:array:0,0:i32Array
 
 ; ModuleID = 'arrayPointers1.bc'
 target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"

Modified: poolalloc/trunk/test/dsa/local/arrayPointers2.ll
URL: http://llvm.org/viewvc/llvm-project/poolalloc/trunk/test/dsa/local/arrayPointers2.ll?rev=117217&r1=117216&r2=117217&view=diff
==============================================================================
--- poolalloc/trunk/test/dsa/local/arrayPointers2.ll (original)
+++ poolalloc/trunk/test/dsa/local/arrayPointers2.ll Sat Oct 23 19:59:54 2010
@@ -1,6 +1,6 @@
 ; 2D array as array of pointers. Array should not be folded.
 
-;RUN: dsaopt %s -dsa-local -analyze -check-type=main:array:0,FoldedVOID
+;RUN: dsaopt %s -dsa-local -analyze -check-type=main:array:0,0:i32::4:i32::8:floatArray
 ;RUN: dsaopt %s -dsa-local -analyze -check-type=main:array,0:%\struct.structType*Array
 
 

Modified: poolalloc/trunk/test/dsa/local/arrayPointers3.ll
URL: http://llvm.org/viewvc/llvm-project/poolalloc/trunk/test/dsa/local/arrayPointers3.ll?rev=117217&r1=117216&r2=117217&view=diff
==============================================================================
--- poolalloc/trunk/test/dsa/local/arrayPointers3.ll (original)
+++ poolalloc/trunk/test/dsa/local/arrayPointers3.ll Sat Oct 23 19:59:54 2010
@@ -1,7 +1,7 @@
 ; array of pointers to arrays of structs. The inner array gets folded.
 
 ;RUN: dsaopt %s -dsa-local -analyze -check-type=main:array,0:%\struct.structType*Array
-;RUN: dsaopt %s -dsa-local -analyze -check-type=main:array:0,main:row1,main:row2,FoldedVOID
+;RUN: dsaopt %s -dsa-local -analyze -check-type=main:array:0,main:row1,main:row2,0:i32::4:i32::8:floatArray
 ;RUN: dsaopt %s -dsa-local -analyze -check-same-node=main:row1,main:row2,main:array:0
 
 ; ModuleID = 'arrayPointers3.bc'

Modified: poolalloc/trunk/test/dsa/local/arrays1.ll
URL: http://llvm.org/viewvc/llvm-project/poolalloc/trunk/test/dsa/local/arrays1.ll?rev=117217&r1=117216&r2=117217&view=diff
==============================================================================
--- poolalloc/trunk/test/dsa/local/arrays1.ll (original)
+++ poolalloc/trunk/test/dsa/local/arrays1.ll Sat Oct 23 19:59:54 2010
@@ -1,9 +1,9 @@
 ;Checks that structure field offsets are calculated correctly
 ;Checks that structure is folded
 
-;RUN: dsaopt %s -dsa-local -analyze -check-same-node=func:tmp:0:0,func:tmp:0
+;RUN: dsaopt %s -dsa-local -analyze -check-same-node=func:tmp:0:8,func:tmp:0
 ;RUN: dsaopt %s -dsa-local -analyze -check-same-node=func:c:0,func:tmp:0,func:s2:8
-;RUN: dsaopt %s -dsa-local -analyze -check-type=func:tmp:0,FoldedVOID
+;RUN: dsaopt %s -dsa-local -analyze -check-type=func:tmp:0,0:i32::8:i32*Array
 
 ; ModuleID = 'arrays1.bc'
 target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"

Modified: poolalloc/trunk/test/dsa/local/arrays2.ll
URL: http://llvm.org/viewvc/llvm-project/poolalloc/trunk/test/dsa/local/arrays2.ll?rev=117217&r1=117216&r2=117217&view=diff
==============================================================================
--- poolalloc/trunk/test/dsa/local/arrays2.ll (original)
+++ poolalloc/trunk/test/dsa/local/arrays2.ll Sat Oct 23 19:59:54 2010
@@ -1,5 +1,6 @@
 
-;RUN: dsaopt %s -dsa-local -analyze -check-same-node=func:s2:8,func:c:0,func:tmp:0:0
+;RUN: dsaopt %s -dsa-local -analyze -check-same-node=func:s2:8,func:c:0,func:tmp:0:8
+;RUN: dsaopt %s -dsa-local -analyze -check-type=func:tmp:0,0:i32::8:i32*Array
 
 ; ModuleID = 'arrays2.bc'
 target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"

Modified: poolalloc/trunk/test/dsa/local/arrays3.ll
URL: http://llvm.org/viewvc/llvm-project/poolalloc/trunk/test/dsa/local/arrays3.ll?rev=117217&r1=117216&r2=117217&view=diff
==============================================================================
--- poolalloc/trunk/test/dsa/local/arrays3.ll (original)
+++ poolalloc/trunk/test/dsa/local/arrays3.ll Sat Oct 23 19:59:54 2010
@@ -1,4 +1,4 @@
-;RUN: dsaopt %s -dsa-local -analyze -check-same-node=func:s2:0,func:c:0,func:tmp:0:0
+;RUN: dsaopt %s -dsa-local -analyze -check-same-node=func:s2:8,func:c:0,func:tmp:0:8
 ;RUN: dsaopt %s -dsa-local -analyze -check-same-node=func:ptr:0,func:ptr1:0,func:s2
 
 ; ModuleID = 'arrays3.bc'





More information about the llvm-commits mailing list