Mercurial > projects > ldc
comparison tests/mini/vararg6.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 | a9feaed801d7 |
comparison
equal
deleted
inserted
replaced
444:f2b5f86348ef | 445:cc40db549aea |
---|---|
140 | 140 |
141 else if (ti == typeid(float)) | 141 else if (ti == typeid(float)) |
142 printf("%f", *cast(float*)arg); | 142 printf("%f", *cast(float*)arg); |
143 else if (ti == typeid(double)) | 143 else if (ti == typeid(double)) |
144 printf("%f", *cast(double*)arg); | 144 printf("%f", *cast(double*)arg); |
145 else if (ti == typeid(real)) // FIXME: 80bit? | 145 else if (ti == typeid(real)) |
146 { | 146 printf("%llf", *cast(real*)arg); |
147 version(LLVM_X86_FP80) | |
148 printf("%llf", *cast(real*)arg); | |
149 else | |
150 printf("%f", *cast(real*)arg); | |
151 } | |
152 | 147 |
153 else if (ti == typeid(char)) | 148 else if (ti == typeid(char)) |
154 printf("%.*s", 1, arg); | 149 printf("%.*s", 1, arg); |
155 else if (ti == typeid(wchar)) | 150 else if (ti == typeid(wchar)) |
156 printf("%.*s", 2, arg); | 151 printf("%.*s", 2, arg); |