On 23 April 2014 17:50, Jonathan Wakely wrote: > On 23 April 2014 17:24, Agustin Perez Paladini wrote: >> Basically I was thinking in something like asserts, but that are only >> visible for the compiler and don't affect the code. Something like >> >> __builtin_assume(x > 0); >> __builtin_assume(x < 10); >> >> where x is a variable. That way the compiler can do better optimizations. > > You can use __buitlin_expect and __builtin_unreachable to do that. Or just __builtin_unreachable alone #define ASSUME(X) if (!(X)) __builtin_unreachable() This tells the compiler X is always true. Isn't that what you want?