[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