Thread overview
Updating other compiler frontends [was D 1.076 and 2.061 release]
Jan 08, 2013
Iain Buclaw
Jan 08, 2013
Walter Bright
Jan 09, 2013
Iain Buclaw
January 08, 2013
On Tuesday, 1 January 2013 at 23:46:32 UTC, Walter Bright wrote:
> The big news is Win64 is now supported (in alpha).
>
> http://www.digitalmars.com/d/download.html
>
> D 1.076 changelog: http://www.digitalmars.com/d/1.0/changelog.html
>
> A couple issues:
>
> 1. the dlang.org isn't updated yet.
> 2. the OS X package hasn't been built yet (problems with the package script).
>
> I hope to get these resolved shortly. In the meantime, enjoy and have a Happy D Year!

Needed a bit of R&R so I started on merging 2.061 D frontend into GDC last night.

The only urk I've hit so far is that someone thought it might be a good idea to define a ulonglong and longlong type in a place that doesn't exist in gdc's copy of the dfrontend.  But given that I've expressed positive views on moving towards minimising the use of #ifdef's in the app code.  Rather than removing the use of this, I've done the following changes my side to try and suppliment this.

- Removed some #ifdefs for GDC in the D frontend.
- Moved over d-gcc-complex_t.h to complex_t.h, moved about some includes in mars.h.
- Created a port.c/port.h and started implementing hooks for gcc backend.
- Created a new target.c/target.h and started defining some new hooks to reduce some more #ifdef'd code in the dfrontend.


For successfully porting port.h over to gdc, the main problem is with using gcc's real_t implementation instead of float, double that dmd uses is that the real_t implementation relies on some typedefs in mars.h (for dint64_t, etc), so these will need to be moved out to somewhere else...

Would a target.h header be fine for this?  Or do you have somewhere else in mind.

Once I've finished the changes, I'll send a pull request of the initial work for the next release.

Thanks,
Iain.
January 08, 2013
On 1/8/2013 5:49 AM, Iain Buclaw wrote:
> Would a target.h header be fine for this?  Or do you have somewhere else in mind.

I think a target.h/target.c would be a good addition. In general, I'd like to see all #ifdef's removed from the main dmd source code. Host and target specific behaviors should be abstracted out, like what root/port.h attempts to do.

January 09, 2013
On 8 January 2013 23:15, Walter Bright <newshound2@digitalmars.com> wrote:

> On 1/8/2013 5:49 AM, Iain Buclaw wrote:
>
>> Would a target.h header be fine for this?  Or do you have somewhere else in mind.
>>
>
> I think a target.h/target.c would be a good addition. In general, I'd like to see all #ifdef's removed from the main dmd source code. Host and target specific behaviors should be abstracted out, like what root/port.h attempts to do.
>
>

OK, well I've started it off with Target::typesize, ::typealign, ::fieldalign.  Maybe also ::fieldoffset, though gdc currently uses the D frontend code to get that that with no known issues (only way to find out is when we start expanding D2 to more targets).

And left it with the comment:  This file contains a data structure that describes a back-end target. At present it is incomplete, but in future it should grow to contain most or all target machine and target O/S specific information.


Regards

-- 
Iain Buclaw

*(p < e ? p++ : p) = (c & 0x0f) + '0';