Chapter 5. C Implementation-defined behavior 127• [Whether the "inexact" floating-point exception can be raised when the rounded result actually doesequal the mathematical result in an IEC 60559 conformant implementation (F.9).]• [Whether the "underflow" (and "inexact") floating-point exception can be raised when a result istiny but not inexact in an IEC 60559 conformant implementation (F.9).]5.7. Arrays and pointers• [The result of converting a pointer to an integer or vice versa (6.3.2.3).]A cast from pointer to integer discards most-significant bits if the pointer representation is largerthan the integer type, sign-extends1 if the pointer representation is smaller than the integer type,otherwise the bits are unchanged.A cast from integer to pointer discards most-significant bits if the pointer representation is smallerthan the integer type, extends according to the signedness of the integer type if the pointer repre-sentation is larger than the integer type, otherwise the bits are unchanged.When casting from pointer to integer and back again, the resulting pointer must reference the sameobject as the original pointer, otherwise the behavior is undefined. That is, one may not use integerarithmetic to avoid the undefined behavior of pointer arithmetic as proscribed in 6.5.6/8.• [The size of the result of subtracting two pointers to elements of the same array (6.5.6).]5.8. Hints• [The extent to which suggestions made by using the register storage-class specifier are effective(6.7.1).]The register specifier affects code generation only in these ways:• When used as part of the register variable extension, see Section 6.38 Variables in SpecifiedRegisters.• When -O0 is in use, the compiler allocates distinct stack memory for all variables that do nothave the register storage-class specifier; if register is specified, the variable may have ashorter lifespan than the code would indicate and may never be placed in memory.• On some rare x86 targets, setjmp doesn’t save the registers in all circumstances. In those cases,GCC doesn’t allocate any variables in registers unless they are marked register.• [The extent to which suggestions made by using the inline function specifier are effective (6.7.4).]GCC will not inline any functions if the -fno-inline option is used or if -O0 is used. Otherwise,GCC may still be unable to inline a function for many reasons; the -Winline option may be usedto determine if a function has not been inlined and why not.5.9. Structures, unions, enumerations, and bit-fields• [Whether a "plain" int bit-field is treated as a signed int bit-field or as an unsigned int bit-field (6.7.2, 6.7.2.1).]1. Future versions of GCC may zero-extend, or use a target-defined ptr_extend pattern. Do not rely on signextension.