+ if (type1->size_constant != type2->size_constant)
+ return false;
+
+ /* never identify vla types, because we need them for caching calculated
+ * sizes later in ast2firm */
+ if (type1->is_vla || type2->is_vla)
+ return false;
+
+ /* TODO: compare size expressions for equality... */
+
+ return false;
+}
+
+static bool compound_types_equal(const compound_type_t *type1,
+ const compound_type_t *type2)
+{
+ return type1->compound == type2->compound;
+}
+
+static bool enum_types_equal(const enum_type_t *type1,
+ const enum_type_t *type2)
+{
+ return type1->enume == type2->enume;
+}
+
+static bool typedef_types_equal(const typedef_type_t *type1,
+ const typedef_type_t *type2)
+{
+ return type1->typedefe == type2->typedefe;
+}
+
+static bool typeof_types_equal(const typeof_type_t *type1,
+ const typeof_type_t *type2)
+{
+ if (type1->expression != type2->expression)
+ return false;
+ if (type1->typeof_type != type2->typeof_type)