Use "whole program" and "link time optimization" features of gcc. The
whole-program optimization enables the compiler to evaluate the entire
firmware for optimization instead of just one code file at a time.
This leads to better overall optimizations.
The "relax" option enables the linker to convert certain "call"
instructions to the smaller "rcall" instruction. This reduces the
size of the resulting binary.