Mercurial > projects > ldc
changeset 62:b86e00b938a5 trunk
[svn r66] Added support for imaginary floating point types
author | lindquist |
---|---|
date | Thu, 25 Oct 2007 09:48:36 +0200 |
parents | 0258a7171a42 |
children | 2c39b5292cf3 |
files | gen/toir.c gen/tollvm.c lphobos/build.sh lphobos/typeinfo1/ti_idouble.d lphobos/typeinfo1/ti_ifloat.d lphobos/typeinfo1/ti_ireal.d lphobos/typeinfo2/ti_Adouble.d lphobos/typeinfo2/ti_Afloat.d lphobos/typeinfo2/ti_Areal.d lphobos/typeinfos1.d test/imag1.d |
diffstat | 11 files changed, 63 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/gen/toir.c Thu Oct 25 09:26:17 2007 +0200 +++ b/gen/toir.c Thu Oct 25 09:48:36 2007 +0200 @@ -328,10 +328,11 @@ { Logger::print("RealExp::toConstElem: %s | %s\n", toChars(), type->toChars()); LOG_SCOPE; - const llvm::Type* fty = LLVM_DtoType(type); - if (type->ty == Tfloat32) + Type* t = LLVM_DtoDType(type); + const llvm::Type* fty = LLVM_DtoType(t); + if (t->ty == Tfloat32 || t->ty == Timaginary32) return llvm::ConstantFP::get(fty,float(value)); - else if (type->ty == Tfloat64 || type->ty == Tfloat80) + else if (t->ty == Tfloat64 || t->ty == Timaginary64 || t->ty == Tfloat80 || t->ty == Timaginary80) return llvm::ConstantFP::get(fty,double(value)); assert(0); return NULL;
--- a/gen/tollvm.c Thu Oct 25 09:26:17 2007 +0200 +++ b/gen/tollvm.c Thu Oct 25 09:48:36 2007 +0200 @@ -65,11 +65,20 @@ // floats case Tfloat32: + case Timaginary32: return llvm::Type::FloatTy; case Tfloat64: + case Timaginary64: case Tfloat80: + case Timaginary80: return llvm::Type::DoubleTy; + // complex + case Tcomplex32: + case Tcomplex64: + case Tcomplex80: + assert(0 && "complex number types not yet implemented"); + // pointers case Tpointer: { assert(t->next);
--- a/lphobos/build.sh Thu Oct 25 09:26:17 2007 +0200 +++ b/lphobos/build.sh Thu Oct 25 09:48:36 2007 +0200 @@ -1,7 +1,7 @@ #!/bin/bash echo "removing old objects" -mkdir obj +mkdir -p obj rm -f obj/*.bc rm -f ../lib/*.bc
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lphobos/typeinfo1/ti_idouble.d Thu Oct 25 09:48:36 2007 +0200 @@ -0,0 +1,12 @@ + +// idouble + +module typeinfo1.ti_idouble; + +private import typeinfo1.ti_double; + +class TypeInfo_p : TypeInfo_d +{ + char[] toString() { return "idouble"; } +} +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lphobos/typeinfo1/ti_ifloat.d Thu Oct 25 09:48:36 2007 +0200 @@ -0,0 +1,12 @@ + +// ifloat + +module typeinfo1.ti_ifloat; + +private import typeinfo1.ti_float; + +class TypeInfo_o : TypeInfo_f +{ + char[] toString() { return "ifloat"; } +} +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lphobos/typeinfo1/ti_ireal.d Thu Oct 25 09:48:36 2007 +0200 @@ -0,0 +1,12 @@ + +// ireal + +module typeinfo1.ti_ireal; + +private import typeinfo1.ti_real; + +class TypeInfo_j : TypeInfo_e +{ + char[] toString() { return "ireal"; } +} +
--- a/lphobos/typeinfo2/ti_Adouble.d Thu Oct 25 09:26:17 2007 +0200 +++ b/lphobos/typeinfo2/ti_Adouble.d Thu Oct 25 09:48:36 2007 +0200 @@ -100,7 +100,7 @@ } // idouble[] -version(none) + class TypeInfo_Ap : TypeInfo_Ad { char[] toString() { return "idouble[]"; }
--- a/lphobos/typeinfo2/ti_Afloat.d Thu Oct 25 09:26:17 2007 +0200 +++ b/lphobos/typeinfo2/ti_Afloat.d Thu Oct 25 09:48:36 2007 +0200 @@ -99,7 +99,7 @@ } // ifloat[] -version(none) + class TypeInfo_Ao : TypeInfo_Af { char[] toString() { return "ifloat[]"; }
--- a/lphobos/typeinfo2/ti_Areal.d Thu Oct 25 09:26:17 2007 +0200 +++ b/lphobos/typeinfo2/ti_Areal.d Thu Oct 25 09:48:36 2007 +0200 @@ -101,7 +101,7 @@ } // ireal[] -version(none) + class TypeInfo_Aj : TypeInfo_Ae { char[] toString() { return "ireal[]"; }
--- a/lphobos/typeinfos1.d Thu Oct 25 09:26:17 2007 +0200 +++ b/lphobos/typeinfos1.d Thu Oct 25 09:48:36 2007 +0200 @@ -7,7 +7,10 @@ typeinfo1.ti_dchar, typeinfo1.ti_double, typeinfo1.ti_float, +typeinfo1.ti_ifloat, +typeinfo1.ti_idouble, typeinfo1.ti_int, +typeinfo1.ti_ireal, typeinfo1.ti_long, typeinfo1.ti_ptr, typeinfo1.ti_real,