http://d.puremagic.com/issues/show_bug.cgi?id=5294
--- Comment #7 from Don <clugd...@yahoo.com.au> 2010-12-06 11:53:27 PST --- Bearophile -- That's an interesting link. Currently, DMD back-end bugs are being found at the rate of about 3 per year. So yes, fuzzy testing of DMC could probably flush out some backend bugs a bit faster. ------------------- Here's what's happening. First, in this code: for (int i = 0; i < 10; i++) { foo(i * 5 - 6); } it sees that i and 10 are always >=0, so the signed comparison "i < 10" is replaced with an unsigned one. (This happens in the backend in constprop() ). Then, while dealing with loop invariants, it rewrites the loop into: for (int _i2 = -6; _i2 < 10*5 - 6; _i2 += 5) { foo(_i2); } Fine. Except that it had changed the comparison into an unsigned one! Particularly interesting is the case where the call is foo(i*5-50); Then, the loop becomes: for (int _i2 = -50; _i2 < 0; _i2 += 5) Since an unsigned value is NEVER less than zero, it just drops the loop completely! Nasty. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------