January 02, 2006
When attempting to compile the latest Mango source, I caught this nasty.  Using the command line:
> build @mango -inline -O

Will exhibit the error:
> Internal error: ..\ztc\cod1.c 1293

It requires that those two specific command line arguments be present, at minimum, for the error to manifest.  Using dmd's -v output, I think the offending code is in mango.utils.Timer, as that is where it gets to before issuing this error.  The specific offending function is mango.utils.Timer.update() which looks like:

#        private final void update ()
#        {
#                volatile time = (System.getMillisecs() / interval) * interval;
#        }

So... I'd say what's happening, is that DMD is marking it as a candidate for inlining -- since its a one-liner anyhow -- and then barfing all over the 'volatile' attribute, perhaps?  Should the 'private' attribute prevent inlining, especially since both of the fields referanced ('time', and 'interval') are private?

Dunno.

-- Chris Sauls