A bit of a thread hijack, but presumably this helps avoid the _slew_ of "unused variable" and "variable set but never used" warnings people currently get.  Ok, we have to support SDCC, that's fine, but is the alternative having to put 
```
#if SOME_FEATURE
code
code
code glorious code
code
#else
(void)variable_used_by_some_feature1;
(void)variable_used_by_some_feature2;
(void)variable_used_by_some_feature2;
#endif
```

For every block?

I guess the top of every function can have a block for the feature's variables, but that still leaves places where the variable is common, and set in all paths, but only some features use them.