[SPEC2DEF]

Implement support for int128.
CORE-6630 #resolve

svn path=/trunk/; revision=57439
This commit is contained in:
Timo Kreuzer 2012-09-29 22:58:06 +00:00
parent 85aed37ede
commit 23eb1826bb

View file

@ -67,6 +67,7 @@ enum
ARG_WSTR,
ARG_DBL,
ARG_INT64,
ARG_INT128,
ARG_FLOAT
};
@ -191,7 +192,9 @@ OutputLine_stub(FILE *file, EXPORT *pexp)
case ARG_PTR: fprintf(file, "void*"); break;
case ARG_STR: fprintf(file, "char*"); break;
case ARG_WSTR: fprintf(file, "wchar_t*"); break;
case ARG_DBL: case ARG_INT64 : fprintf(file, "__int64"); break;
case ARG_DBL:
case ARG_INT64 : fprintf(file, "__int64"); break;
case ARG_INT128 : fprintf(file, "__int128"); break;
case ARG_FLOAT: fprintf(file, "float"); break;
}
fprintf(file, " a%d", i);
@ -210,6 +213,7 @@ OutputLine_stub(FILE *file, EXPORT *pexp)
case ARG_WSTR: fprintf(file, "'%%ws'"); break;
case ARG_DBL: fprintf(file, "%%f"); break;
case ARG_INT64: fprintf(file, "%%\"PRix64\""); break;
case ARG_INT128: fprintf(file, "%%\"PRix128\""); break;
case ARG_FLOAT: fprintf(file, "%%f"); break;
}
}
@ -226,6 +230,7 @@ OutputLine_stub(FILE *file, EXPORT *pexp)
case ARG_WSTR: fprintf(file, "(wchar_t*)a%d", i); break;
case ARG_DBL: fprintf(file, "(double)a%d", i); break;
case ARG_INT64: fprintf(file, "(__int64)a%d", i); break;
case ARG_INT128: fprintf(file, "(__int128)a%d", i); break;
case ARG_FLOAT: fprintf(file, "(float)a%d", i); break;
}
}
@ -600,6 +605,11 @@ ParseFile(char* pcStart, FILE *fileDest, PFNOUTLINE OutputLine)
exp.nStackBytes += 8;
exp.anArgs[exp.nArgCount] = ARG_INT64;
}
else if (CompareToken(pc, "int128"))
{
exp.nStackBytes += 16;
exp.anArgs[exp.nArgCount] = ARG_INT128;
}
else if (CompareToken(pc, "float"))
{
exp.nStackBytes += 4;