On Thursday, 31 July 2014 at 10:24:07 UTC, ponce wrote:
If I write:

---
switch(expr())
{
case 0: doIt();
case 1: doThat();
default:
  assert(0);
}
---

Will the optimizer be able to remove the default: case?

Assuming fall-through (`goto case`), not only the default case. The entire switch could be removed, under the condition that the compiler can prove that neither `expr()`, `doIt()`, nor `doThat()` throws, even if they have side effects. And maybe even the entire function, and all functions that call it, depending on how exactly the control flow is.

Reply via email to