[EGCS] Re: min/max macros

Joe Buck jbuck@synopsys.com
Thu Dec 11 19:51:00 GMT 1997


> > > #define max(a,b)	(((a) > (b)) ? (a) : (b))
> > > #define min(a,b)	(((a) < (b)) ? (a) : (b))
> > 
> > That is a big no-no: Absolutely no performance benefits with any decent
> > compiler but nasty side effects.
> 
> so egcs isn't a decent compiler?
> 
> for example, the macro-max(2,3) will be evaluated at compile time,
> while the function-max(2,3) won't...

The function max(2,3) will indeed be evaluated at compile time, if it is
inlined.

> this get's even worse on things like:
> 
> int mult(int a, int b) { return a*b; };
> 
> mult(a,3) will result in an "imul 3" on x86... definitely
> slower than a lea, for example.

Same for mult: if it is inlined, it will be evaluated at compile time if
given constant arguments.



More information about the Gcc mailing list