[llvm-commits] CVS: llvm/lib/Analysis/DataStructure/DataStructure.cpp
Chris Lattner
lattner at cs.uiuc.edu
Sun Nov 2 15:03:01 PST 2003
Changes in directory llvm/lib/Analysis/DataStructure:
DataStructure.cpp updated: 1.123 -> 1.124
---
Log message:
Fix bug: test/Regression/Analysis/DSGraph/2003-11-02-NodeCollapsing.ll
---
Diffs of the changes: (+8 -6)
Index: llvm/lib/Analysis/DataStructure/DataStructure.cpp
diff -u llvm/lib/Analysis/DataStructure/DataStructure.cpp:1.123 llvm/lib/Analysis/DataStructure/DataStructure.cpp:1.124
--- llvm/lib/Analysis/DataStructure/DataStructure.cpp:1.123 Mon Oct 20 14:43:06 2003
+++ llvm/lib/Analysis/DataStructure/DataStructure.cpp Sun Nov 2 15:02:20 2003
@@ -252,9 +252,11 @@
/// ElementTypesAreCompatible - Check to see if the specified types are
/// "physically" compatible. If so, return true, else return false. We only
-/// have to check the fields in T1: T2 may be larger than T1.
+/// have to check the fields in T1: T2 may be larger than T1. If AllowLargerT1
+/// is true, then we also allow a larger T1.
///
-static bool ElementTypesAreCompatible(const Type *T1, const Type *T2) {
+static bool ElementTypesAreCompatible(const Type *T1, const Type *T2,
+ bool AllowLargerT1) {
TypeElementWalker T1W(T1), T2W(T2);
while (!T1W.isDone() && !T2W.isDone()) {
@@ -270,7 +272,7 @@
T2W.StepToNextType();
}
- return T1W.isDone();
+ return AllowLargerT1 || T1W.isDone();
}
@@ -327,8 +329,8 @@
if (Ty == Type::VoidTy) {
// If this is the first type that this node has seen, just accept it without
// question....
- assert(Offset == 0 && "Cannot have an offset into a void node!");
- assert(!isArray() && "This shouldn't happen!");
+ assert(Offset == 0 && !isArray() &&
+ "Cannot have an offset into a void node!");
Ty = NewTy;
NodeType &= ~Array;
if (WillBeArray) NodeType |= Array;
@@ -424,7 +426,7 @@
// just require each element in the node to be compatible.
if (NewTySize <= SubTypeSize && NewTySize && NewTySize < 256 &&
SubTypeSize && SubTypeSize < 256 &&
- ElementTypesAreCompatible(NewTy, SubType))
+ ElementTypesAreCompatible(NewTy, SubType, !isArray()))
return false;
// Okay, so we found the leader type at the offset requested. Search the list
More information about the llvm-commits
mailing list