Does gcc optimize "if (constant)" inside while loops?
Andrew Haley
aph@redhat.com
Tue May 5 10:05:00 GMT 2009
Timur Tabi wrote:
> I have this code:
>
> #define spin_event_timeout(condition, timeout, delay, rc) \
> { \
> unsigned long __loops = tb_ticks_per_usec * timeout; \
> unsigned long __start = get_tbl(); \
> while (!(rc = (condition)) && (tb_ticks_since(__start) <= __loops)) \
> if (delay) \
> udelay(delay); \
> else \
> cpu_relax(); \
> }
>
> assuming that the 'delay' parameter is a constant, will gcc
> optimize-out the "if (delay)" when this macro is compiled?
Yes, because one of the arms of the conditional is trivially dead.
Andrew.
More information about the Gcc-help
mailing list