Hi,

I found a situation where the following patch is needed. Building
llvm-gcc head (with cummulative patch) fails with SEGV while compiling
the libstdc++. This patch is a bandaid and I don't know if its the
correct thing or not as TYPE_SIZE(Type) should probably not be null, but
it is.

You can probably replicate this by doing a clean llvm-gcc build
including the latest patches.

Reid.

Index: llvm-types.cpp
===================================================================
--- llvm-types.cpp      (revision 276)
+++ llvm-types.cpp      (working copy)
@@ -58,7 +58,7 @@
 // refined and replaced by another LLVM Type. This is achieved by
maintaining
 // a map.

-// Collection of LLVM Types and their names
+// Collection of LLVM Types
 static std::vector<const Type *> LTypes;
 typedef DenseMap<const Type *, unsigned> LTypesMapTy;
 static LTypesMapTy LTypesMap;
@@ -212,7 +212,8 @@
 bool isPassedByInvisibleReference(tree Type) {
   // FIXME: Search for TREE_ADDRESSABLE in calls.c, and see if there
are other
   // cases that make arguments automatically passed in by reference.
-  return TREE_ADDRESSABLE(Type);
+  return TREE_ADDRESSABLE(Type) ||
+         (TYPE_SIZE(Type) && TREE_CODE(TYPE_SIZE(Type)) !=
INTEGER_CST);
 }

 /// GetTypeName - Return a fully qualified (with namespace prefixes)
name for


_______________________________________________
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits

Reply via email to