https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71231
--- Comment #7 from Uroš Bizjak <ubizjak at gmail dot com> --- The difference in _optimized dumps is: $ diff -u rnflow.f90.210t.optimized rnflow.f90.210t.optimized_ --- rnflow.f90.210t.optimized 2016-05-23 23:44:55.327695414 +0200 +++ rnflow.f90.210t.optimized_ 2016-05-23 23:41:25.050960650 +0200 @@ -3525,8 +3525,8 @@ <L142>: _238 = jgrm__lsm.1377_304 * 843314861; _239 = _238 + 453816693; - _240 = _239 & 2147483647; - _241 = (real(kind=4)) _240; + _240 = _239; + _241 = (real(kind=4)) _239; _242 = _241 * 4.656612873077392578125e-10; switch (isns_319) <default: <L142>, case -1: <L139>, case 1: <L140>> @@ -3543,7 +3543,7 @@ goto <bb 72>; <bb 72>: - jgrm = _240; + jgrm = _239; goto <bb 65>; <bb 73>: @@ -3631,7 +3631,7 @@ goto <bb 67>; <bb 80>: - jgrm = _240; + jgrm = _239; <bb 81>: __builtin_free (_150); However, the masking operation should not be removed.