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,&ltm))==5,failed=localtime_r(&timev,&ltm)==0,failed=localtime_r(&timev,&ltm)!=0'
depends on order of evaluation of side effects

Source code is

  __builtin_choose_expr (__builtin_classify_type (localtime_r (&timev, &ltm))
             == 5,
             failed = localtime_r (&timev, &ltm) == NULL,
             failed = localtime_r (&timev, &ltm) != 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.

Reply via email to