
On Thursday, August 25, 2011 17:44:58 Timur Tabi wrote:
Mike Frysinger wrote:
if we let the optimizer do it instead of the preprocessor, we get better code coverage in the face of different config settings.
Oh, I thought this was some new feature of U-Boot.
Can you give me an example of where DCE could be used to eliminate an #ifdef?
a change i talked about but havent yet posted would be to fix debug(). currently it looks more or less like: #ifdef DEBUG # define debug(...) printf(...) #else # define debug(...) #endif this causes people to do things like put local variables only used with debug() code behind an #ifdef DEBUG in their code otherwise they get unused variable warnings.
if, instead, we did something like: #ifdef DEBUG # define __DEBUG_KNOB 1 #else # define __DEBUG_KNOB 0 #endif #define debug(...) do { if (__DEBUG_KNOB) printf(...); } while (0)
the code would always get compiled and checked, but gcc would throw away it at DCE time, and there would be no unused variable warnings. -mike