[llvm-commits] CVS: llvm-gcc/gcc/llvm-types.c

Chris Lattner lattner at cs.uiuc.edu
Wed Apr 21 13:49:02 PDT 2004


Changes in directory llvm-gcc/gcc:

llvm-types.c updated: 1.2 -> 1.3

---
Log message:

Fix PR326: http://llvm.cs.uiuc.edu/PR326 : [llvmgcc] Crash on use of undeclared enum type


---
Diffs of the changes:  (+11 -0)

Index: llvm-gcc/gcc/llvm-types.c
diff -u llvm-gcc/gcc/llvm-types.c:1.2 llvm-gcc/gcc/llvm-types.c:1.3
--- llvm-gcc/gcc/llvm-types.c:1.2	Wed Mar 10 13:38:33 2004
+++ llvm-gcc/gcc/llvm-types.c	Wed Apr 21 13:48:53 2004
@@ -1349,6 +1349,17 @@
   case BOOLEAN_TYPE:     return BoolTy;
 
   case ENUMERAL_TYPE:
+    if (TYPE_SIZE(type) == 0) {
+      const char *Name;
+      if (TREE_CODE(TYPE_NAME(type)) == IDENTIFIER_NODE)
+        Name = IDENTIFIER_POINTER(TYPE_NAME(type));
+      else 
+        Name = IDENTIFIER_POINTER(DECL_NAME(TYPE_NAME(type)));
+
+      return llvm_type_create_opaque(get_type_name(Name, "enum.",
+                                                   TYPE_CONTEXT(type)));
+    }
+    /* FALL THROUGH */
   case INTEGER_TYPE:
     return llvm_type_get_integer(TREE_INT_CST_LOW(TYPE_SIZE(type)),
                                  TREE_UNSIGNED(type));





More information about the llvm-commits mailing list