6.19 Inline assembler effect on processor condition flags in C and C++ code
An inline assembly language instruction might explicitly or implicitly attempt to update the processor condition flags.
Inline assembly language instructions that involve only virtual register operands or simple
expression operands have predictable behavior. The condition flags are set by the
instruction if either an implicit or an explicit update is specified. The condition flags
are unchanged if no update is specified.
If any of the instruction operands are not simple operands, then the condition flags might
be corrupted unless the instruction updates them.
In general, the compiler cannot easily diagnose potential corruption of the condition
flags. However, for operands that require the construction and subsequent destruction of C++
temporaries the compiler gives a warning if the instruction attempts to update the condition
flags. This is because the destruction might corrupt the condition flags.