Caller Saves (GNU Compiler Collection (GCC) Internals)

#### 19.9.10 Caller-Saves Register Allocation ¶

If you enable it, GCC can save registers around function calls. This makes it possible to use call-clobbered registers to hold variables that must live across calls.

Macro: HARD_REGNO_CALLER_SAVE_MODE (regno, nregs) ¶

  A C expression specifying which mode is required for saving nregs of a pseudo-register in call-clobbered hard register regno. If regno is unsuitable for caller save, `VOIDmode` should be returned. For most machines this macro need not be defined since GCC will select the smallest suitable mode.