https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105820
--- Comment #2 from Andrew Macleod <amacleod at redhat dot com> --- Lets see try to remember.... it can be ambiguous. The inversion of undefined is not necessarily expected to be varying in all circumstances.. Likewise, inverting varying is still varying in some circumstances and data flow. It depends on how you are using it. Thus the onus is put on the caller to check for undefined or varying and do exactly what they expect it to do in their circumstance. I probably should have documented it at the time. Also you argued against undefined having a type, so there is no type to invert an undefined to varying with.