When generating code for ISNAN(real-constant), we call build_call_expr() and get back an expression inside a NOP_EXPR, which is not expected, and leads to an ICE further in the middle-end. Using STRIP_TYPE_NOPS gets rid of the problem, even though it might be better to fix it in the middle-end. Andrew, Richard, you had ideas about this, do you want me to keep the PR open after this workaround is committed, and change its component to "middle-end"? Bootstrapped and regtested, with type checking, on x86_64-linux. OK to commit? FX :ADDPATCH fortran: