https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69856
Bug ID: 69856
Summary: libgfortran/intrinsics/ctime.c:59: order of evaluation
problem ?
Product: gcc
Version: 6.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libfortran
Assignee: unassigned at gcc dot gnu.org
Reporter: dcb314 at hotmail dot com
Target Milestone: ---
trunk/libgfortran/intrinsics/ctime.c:59]: (error) Expression
'__builtin_classify_type(localtime_r(&timev,<m))==5,failed=localtime_r(&timev,<m)==0,failed=localtime_r(&timev,<m)!=0'
depends on order of evaluation of side effects
Source code is
__builtin_choose_expr (__builtin_classify_type (localtime_r (&timev, <m))
== 5,
failed = localtime_r (&timev, <m) == NULL,
failed = localtime_r (&timev, <m) != 0);
if (failed)
goto blank;
This looks like two writes to failed in a parameter list.
Suggest split the variable into two and test both for failure.