What GCC flags are commonly used to control undefined behavior in C and C++?
There are a handful of GCC flags that are commonly used to work-around perceived over-eagerness on the part of the compiler when handling undefined behavior, specifically in the C and C++ languages. For example:

  * -fno-strict-aliasing is a staple for those who want "traditional" behavior when type punning. For example: https://lkml.org/lkml/2003/2/26/158

  * -fwrapv is commonly used when wanting to have known behavior for signed overflow. For example: http://archives.postgresql.org/pgsql-hackers/2005-12/msg00635.php

What other ones are there? I obviously can get the full list from the GCC documentation of what flags turn what undefined behavior into what kind of implementation-defined behavior. However, I'm more interested in which options are *commonly used* and *why*?
What GCC flags are commonly used to control undefined behavior in C and C++?
===

There are a handful of GCC flags that are commonly used to work-around perceived over-eagerness on the part of the compiler when handling undefined behavior, specifically in the C and C++ languages. For example:

  * -fno-strict-aliasing is a staple for those who want "traditional" behavior when type punning. For example: https://lkml.org/lkml/2003/2/26/158

  * -fwrapv is commonly used when wanting to have known behavior for signed overflow. For example: http://archives.postgresql.org/pgsql-hackers/2005-12/msg00635.php

What other ones are there? I obviously can get the full list from the GCC documentation of what flags turn what undefined behavior into what kind of implementation-defined behavior. However, I'm more interested in which options are *commonly used* and *why*?