compiler/bootstrap: Fully automated (make updatebootstrap)
[sdk] / compiler / bootstrap / libec / bootstrap / ast.c
index 7f2fd13..26e112c 100644 (file)
@@ -35,6 +35,15 @@ typedef unsigned __int64 uint64;
 #else
 #define __ENDIAN_PAD(x) 0
 #endif
+#if defined(_WIN32)
+#   if defined(__GNUC__) || defined(__TINYC__)
+#      define stdcall __attribute__((__stdcall__))
+#   else
+#      define stdcall __stdcall
+#   endif
+#else
+#   define stdcall
+#endif
 #include <stdint.h>
 #include <sys/types.h>
 enum yytokentype
@@ -876,6 +885,7 @@ unsigned int declaredWithStruct : 1;
 unsigned int typedByReference : 1;
 unsigned int casted : 1;
 unsigned int pointerAlignment : 1;
+unsigned int isLong : 1;
 } __attribute__ ((gcc_struct));
 
 struct TemplatedType *  FindTemplateTypeParameter(struct Context *  ctx, const char *  name);
@@ -4542,6 +4552,7 @@ if(isLong || (targetBits == 64 && targetPlatform != 1))
 specType->kind = 4;
 else
 specType->kind = 3;
+specType->isLong = 1;
 isLong = 1;
 }
 else if(spec->__anon1.specifier == FLOAT)
@@ -4601,6 +4612,8 @@ struct Type * dummy = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_T
 FreeType(dummy);
 CopyTypeInto(specType, symbol->type);
 specType->constant = isConstant;
+(__ecereNameSpace__ecere__com__eSystem_Delete(specType->typeName), specType->typeName = 0);
+specType->typeName = __ecereNameSpace__ecere__sys__CopyString(symbol->type->name);
 }
 else if(!isTypedef)
 {
@@ -4967,7 +4980,7 @@ if(exp)
 ProcessExpressionType(exp);
 ComputeExpression(exp);
 if(exp->type == 2)
-type->bitFieldCount = strtoul(exp->__anon1.__anon1.constant, (((void *)0)), 0);
+type->bitFieldCount = (unsigned int)strtoul(exp->__anon1.__anon1.constant, (((void *)0)), 0);
 }
 break;
 }