https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110946

--- Comment #5 from Dave Rodgman <dave.rodgman at arm dot com> ---
(In reply to Richard Biener from comment #3)
> Note you shouldn't use -Os if you care about performance.  GCC is quite
> reasonable with code size increases at -O2 (as compared to other compilers).
> Instead I suggest you use -flto with -O2 to decrease the size of the final
> executable/library and give GCC better knowledge on unit growth.

Understood, but I think it depends on the magnitude of the perf difference. I'd
expect a smallish perf drop, say 10%, from -Os to be reasonable, but I'd
consider a 3x perf difference to be a compiler issue.(In reply to Alexander
Monakov from comment #2)
> So basically missed inlining at -Os, even memcpy wrappers are not inlined.
> 
> Can you provide a reproducible testcase?
> 
> Note that inline functions in mbedtls/library/alignment.h all miss the
> 'static' qualifier, which affects inlining decisions, and looks like a
> mistake anyway (if they are really meant to be non-static inlines, shouldn't
> there be a comment?)
> 
> Does making them 'static inline' rectify the problem?

The easiest way to reproduce is to use the benchmark tool:

make programs/test/benchmark CC=gcc CFLAGS="-Os"
programs/test/benchmark aes_xts

I don't have a compact reproducer, sorry.

Reply via email to