dmd 2.057 release

Adrian adrian.remove-nospam at veith-system.de
Wed Dec 14 06:59:12 PST 2011


Am 14.12.2011 08:05, schrieb Walter Bright:
> Highlights are use of XMM floating point registers in 64 bit targets,
> and now supporting OS X 64 as a target.
> 
> http://www.digitalmars.com/d/2.0/changelog.html
> http://ftp.digitalmars.com/dmd.2.057.zip
> 
> A lot of people put a ton of effort into making this D's best release
> ever. Thanks!

I have a strange crash of the new dmd 2.057 compiler.

I am running the compiler from inside VisualD. In debug mode the code
compiles fine. In release mode the compiler crashes and Windows starts
the Just-In-Time-Debugger saying that there is an unhandled exception
inside dmd.exe.

as a side note: the same code did compile with 2.056 !

When I try to find the source of the error it gets really funky strange:

int main(string[] argv)
{
	writeln("Hello D-World!");
	auto i = uniform(0, 15);          // line A
	auto c = 0;
	if (c++ < c)					  // line B
		writeln("Why did they call it c++"); // line C
	//writeln(bench!(doStringTest));  // line D
	//writeln(bench!(doBench1));	  // line E
	//writeln(bench!(doBench2));      // line F
	//writeln(bench!(doBench3));      // line G
//	main1(argv);			  // line I
//	return 0;                         // line J
//}                                       // line K

//int main1(string[] argv)                // line L
//{                                       // line M

  ... much more code
}

- the code above crashes
- when I comment out line A it compiles
- when I leave A comment out  B and C - dmd gets into an endless loop (
I waited several minutes for the process to terminate)

- when I leave A and uncomment I to M it compiles
- when I uncomment A to G it compiles
- when I uncomment A to F it crashes

now I tried the following:

int main(string[] argv)
{
	writeln("Hello D-World!");
	auto i = uniform(0, 15);          // line A
	auto c = 0;
	if (c++ < c)					  // line B
		writeln("Why did they call it c++"); // line C
	//writeln(bench!(doStringTest));  // line D
	//writeln(bench!(doBench1));	  // line E
	//writeln(bench!(doBench2));      // line F
	//writeln(bench!(doBench3));      // line G
	main1(argv);			  // line I
	return 0;                         // line J
}                                       // line K

int main1(string[] argv)                // line L
{                                       // line M

  ... much more code
}


- as soon as I uncomment line G it compiles with any combination of line
D to F uncommented
- when line G is commented out any combination of line D to F
uncommented crashes.
- when I comment out line "I" any other combination compiles

I really would like to find a minimal stripped down version of the code,
but as soon as I try to find it, the behavior changes.







More information about the Digitalmars-d-announce mailing list