Properly handle volatile CPU flags during code-gen

This fixes a bug introduced in c543bc10c00bbdb889417d4116f8e9c3236eeaed,
where the reordering of assignment code-gen meant a CPU flag was
checked after it had been changed by an unrelated operation.

The code now checks for flags before allowing other operations.
Fix bogus asserts in v_save_regs() w.r.t retainedness
Prevent shift >= 64 bits in integral conversion

Found by ASAN
Fix cpp off-by-one read error

Found by ASAN
Fix out-of-bound read on old style function call

Found by ASAN
Initialisation test refinements
Prevent undefined inline function references from debug sections