http://d.puremagic.com/issues/show_bug.cgi?id=4067
Summary: [CTFE] Maybe ignored code in CTFE Product: D Version: future Platform: x86 OS/Version: Windows Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: nob...@puremagic.com ReportedBy: bearophile_h...@eml.cc --- Comment #0 from bearophile_h...@eml.cc 2010-04-05 05:52:22 PDT --- Usually I show here minimal programs that contain the bug, but this time I show a bigger small program. This is a small benchmark I've adapted from the old Shootout code, it tests the performance of exceptions (on dmd they are very slow). I use this code both at compile time and run time. It contains a printf and exceptions that can't be used in CTFE, but this program compiles with dmd v.2.042 and prints 0/0 at ctfe. import std.c.stdio: printf; class LoException : Exception { this() { super(null); } } class HiException : Exception { this() { super(null); } } struct HiLo { int hi, lo; } struct App { int hi, lo, count; void someFunction() { try { hiFunction(); } catch (Exception e) { printf("We shouldn't get here\n"); } } void hiFunction() { try { loFunction(); } catch (HiException) { hi++; } } void loFunction() { try { blowUp(); } catch (LoException) { lo++; } } void blowUp() { if (count & 1) throw new HiException(); else throw new LoException(); } auto go(int n) { for (count = 0; count < n; count++) someFunction(); return HiLo(hi, lo); } } void main() { enum int n = 1000; App app; HiLo result1 = app.go(n); // OK printf("excepts(%d) hi|lo = %d | %d\n", n, result1.hi, result1.lo); enum HiLo result2 = app.go(n); // Err printf("excepts(%d) hi|lo = %d | %d\n", n, result2.hi, result2.lo); } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------