Comment # 6 on bug 207 from
(In reply to Iain Buclaw from comment #5)
> As for assert(0) in non-release code, it is still possible to catch it, so
> there's not much in the way of optimising around that. :-)

It's not about catching -- marking it as noreturn doesn't affect
catching, just return/recovery. `assert(0)` is sufficiently special
in D that the compiler already complains when it finds reachable
code following such an assert:

   void f() {
      assert(0);
      f();       // warning: statement is not reachable
   }


> I can have a look, but as far as I recall, gcc optimizer should treat it as
> noreturn.  Whether or not noreturn implies that everything in scope
> afterwards is unreachable depends the optimizer too.

My guess is the calls are not treated as @noreturn, but, since gdc
dropped support for most gcc attributes, verifying this by wrapping
the calls is currently impossible...


You are receiving this mail because: