http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43716
--- Comment #33 from Uros Bizjak <ubizjak at gmail dot com> 2012-07-21 11:31:18 UTC --- The NaN is generated as a mask for DFmode ABS_EXPR: (insn 124 123 125 (set (reg:V2DF 508) (mem/u/c:V2DF (symbol_ref/u:DI ("*.LC13") [flags 0x2]) [5 S16 A128])) doduc.f90:5376 -1 (expr_list:REG_EQUAL (const_vector:V2DF [ (const_double:DF +QNaN [+QNaN]) (const_double:DF 0.0 [0x0.0p+0]) ]) (nil))) or V2DFmode ABS_EXPR: (insn 1648 1647 1649 (set (reg:V2DF 4657) (mem/u/c:V2DF (symbol_ref/u:DI ("*.LC138") [flags 0x2]) [5 S16 A128])) doduc.f90:1851 -1 (expr_list:REG_EQUAL (const_vector:V2DF [ (const_double:DF +QNaN [+QNaN]) (const_double:DF +QNaN [+QNaN]) ]) (nil))) Probably, some mixup happens somewhere in RTL optimization passes.