Mercurial > projects > ldc
view tests/mini/calls1.d @ 445:cc40db549aea
Changed the handling of variadic intrinsics a bit.
Removed the -fp80 option and made real be 80bit floats on X86, this is what the D spec really says it should be and fixes a bunch of issues.
Changed the handling of parameter attributes to a bit more generalized approach.
Added sext/zext attributes for byte/short/ubyte/ushort parameters, fixes #60 .
Parameter attribs now properly set for intrinsic calls if necessary.
Made the tango.math.Math patch less intrusive.
Fixed/added some mini tests.
author | Tomas Lindquist Olsen <tomas.l.olsen@gmail.com> |
---|---|
date | Fri, 01 Aug 2008 17:59:58 +0200 |
parents | 1bb99290e03a |
children |
line wrap: on
line source
module calls1; import tango.core.Vararg; extern(C) int printf(char*, ...); void main() { {int a = byVal1(3);} {int a = void; byRef1(a);} {char[] c = void; refType(c);} {char[] c = void; refTypeByRef(c);} {S s = void; structByVal(s);} {S s = void; structByRef(s);} {S s = void; structByPtr(&s);} {printf("c-varargs %d %d %d\n", 1,2,3);} {int i=3; float f=24.7; dvararg(i,f);} {char[] s = "hello"; dvarargRefTy(s);} {char[] ss = "hello world!"; dvarargRefTy(ss);} } int byVal1(int a) { return a; } void byRef1(ref int a) { a = 3; } void refType(char[] s) { } void refTypeByRef(ref char[] s) { } struct S { float f; double d; long l; byte b; } void structByVal(S s) { } void structByRef(ref S s) { } void structByPtr(S* s) { } void dvararg(...) { printf("%d %.1f\n", va_arg!(int)(_argptr), va_arg!(float)(_argptr)); } void dvarargRefTy(...) { char[] s = va_arg!(char[])(_argptr); printf("%.*s\n", s.length, s.ptr); }