axp
axp
Support non-block `case` and statementw that don't belong to any `case` region, fix #520 #521
The `St` destruction of following code won't be called. ``` #include struct St{ St() { puts("Ctor"); } ~St(){ puts("Dtor"); } }; int f(int a) { switch(a) { case 1:{ St...
``` struct St{ ~St(){} }; int f(int a) { switch(a) { case 1:{ St a; return 1; } } return 0; } ``` ``` fatal error: error in backend: CIR...
``` void f(){ } void test(int x){ try { f(); if (x) { f(); } } catch(...) { } } ```
The following code would generate incorrect terminator, and result in module verification error. ``` switch(a) { case 0: break; int x = 1; } ``` ``` switch(a) { case 0:...