For the lulz: ddmd vs libdparse lexer timings
Daniel Murphy via Digitalmars-d
digitalmars-d at puremagic.com
Tue Jan 6 21:27:18 PST 2015
Is there something wrong with this code or have I found a dmc bug?
#include <stdarg.h>
#include <assert.h>
struct S16 {
char val_0;
unsigned char val_1;
int val_2;
unsigned val_3;
long long val_4;
unsigned val_5;
};
void checkValues(int arg0, unsigned long long arg1, long long arg2, int
arg3, S16 arg4, unsigned arg5, double arg6);
void cppvararg(int arg0, unsigned long long arg1, ...)
{
long long arg2;
int arg3;
S16 arg4;
unsigned arg5;
double arg6;
va_list va;
va_start(va, arg1);
// __asm nop;
arg2 = va_arg(va, long long);
arg3 = va_arg(va, int);
arg4 = va_arg(va, S16);
arg5 = va_arg(va, unsigned);
arg6 = va_arg(va, double);
va_end(va);
checkValues(arg0, arg1, arg2, arg3, arg4, arg5, arg6);
}
void checkValues(int arg0, unsigned long long arg1, long long arg2, int
arg3, S16 arg4, unsigned arg5, double arg6)
{
assert(arg0 == 99);
assert(arg1 == 99);
assert(arg2 == 99);
assert(arg3 == 99);
assert(arg4.val_0 == 99);
assert(arg4.val_1 == 99);
assert(arg4.val_2 == 99);
assert(arg4.val_3 == 99);
assert(arg4.val_4 == 99);
assert(arg4.val_5 == 99);
assert(arg5 == 99);
assert(arg6 == 0);
}
void main()
{
int arg0 = 99;
unsigned long long arg1 = 99;
long long arg2 = 99;
int arg3 = 99;
S16 arg4 = {99, 99, 99, 99, 99, 99};
unsigned arg5 = 99;
double arg6 = 0;
// dvararg(arg0, arg1, arg2, arg3, arg4, arg5, arg6);
cppvararg(arg0, arg1, arg2, arg3, arg4, arg5, arg6);
}
More information about the Digitalmars-d
mailing list