http://d.puremagic.com/issues/show_bug.cgi?id=2697
--- Comment #8 from Don <clugd...@yahoo.com.au> 2009-09-24 08:43:25 PDT --- There was a problem with the patch (failed the DMD test suite). Here's a revised patch which passes. As before, it also requires a change to llmath.d in druntime (or in Phobos1). The simplest way is to copy the contents of __LDBLULLNG() and put it into __DBLULLNG(). Note that __DLBULLNG() has never been used by any previous DMD version, so it can be changed without breaking anything. Index: C:/dmd2/src/dmd/backend/cod4.c =================================================================== --- C:/dmd2/src/dmd/backend/cod4.c (revision 49) +++ C:/dmd2/src/dmd/backend/cod4.c (revision 62) @@ -2313,7 +2313,7 @@ case OPd_s64: return cnvt87(e,pretregs); case OPd_u32: // use subroutine, not 8087 -#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS +#if 1//TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS retregs = mST0; #else retregs = DOUBLEREGS; @@ -2321,7 +2321,8 @@ goto L1; case OPd_u64: - retregs = DOUBLEREGS; + retregs = mST0; + //retregs = DOUBLEREGS; goto L1; case OPu64_d: if (*pretregs & mST0) Index: C:/dmd2/src/dmd/backend/cod1.c =================================================================== --- C:/dmd2/src/dmd/backend/cod1.c (revision 49) +++ C:/dmd2/src/dmd/backend/cod1.c (revision 62) @@ -1936,15 +1936,16 @@ Y(DOUBLEREGS_16,"_INTDBL@"), Y(DOUBLEREGS_16,"_DBLUNS@"), Y(DOUBLEREGS_16,"_UNSDBL@"), - Y(DOUBLEREGS_16,"_DBLULNG@"), +// Y(DOUBLEREGS_16,"_DBLULNG@"), + Y(DOUBLEREGS_16,"__DBLULNG"), Y(DOUBLEREGS_16,"_ULNGDBL@"), Y(DOUBLEREGS_16,"_DBLFLT@"), Y(ALLREGS,"_FLTDBL@"), Y(DOUBLEREGS_16,"_DBLLLNG@"), Y(DOUBLEREGS_16,"_LLNGDBL@"), -#if 0 - Y(DOUBLEREGS_16,"__DBLULLNG"), +#if 1 + Y(mST0|mAX|mDX,"__DBLULLNG"), #else Y(DOUBLEREGS_16,"_DBLULLNG@"), #endif @@ -2022,7 +2023,7 @@ {DOUBLEREGS_16,DOUBLEREGS_32,0,INFfloat,1,1}, // _INTDBL@ intdbl {mAX,mAX,0,INFfloat,1,1}, // _DBLUNS@ dbluns {DOUBLEREGS_16,DOUBLEREGS_32,0,INFfloat,1,1}, // _UNSDBL@ unsdbl -#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS +#if 1//TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS {mDX|mAX,mAX,0,INF32|INFfloat,0,1}, // _DBLULNG@ dblulng #else {mDX|mAX,mAX,0,INFfloat,1,1}, // _DBLULNG@ dblulng @@ -2035,8 +2036,8 @@ {DOUBLEREGS_16,mDX|mAX,0,INFfloat,1,1}, // _DBLLLNG@ {DOUBLEREGS_16,DOUBLEREGS_32,0,INFfloat,1,1}, // _LLNGDBL@ -#if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS - {DOUBLEREGS_16,mDX|mAX,0,INFfloat,2,2}, // _DBLULLNG@ +#if 1//TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS + {0,mDX|mAX,0,INF32|INFfloat,1,2}, // __LDBLULLNG #else {DOUBLEREGS_16,mDX|mAX,0,INFfloat,1,1}, // _DBLULLNG@ #endif @@ -2143,7 +2144,6 @@ 0x66,0xf7,0xe1, // mul ECX 0x66,0x0f,0xa4,0xc2,0x10, // shld EDX,EAX,16 ;DX,AX = EAX }; - c = genasm(c,lmul,sizeof(lmul)); } else -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------