c/3345: incorrect order of evaluation of + operator

chris@achaea.com chris@achaea.com
Thu Jun 21 11:56:00 GMT 2001


>Number:         3345
>Category:       c
>Synopsis:       incorrect order of evaluation of + operator
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          wrong-code
>Submitter-Id:   net
>Arrival-Date:   Thu Jun 21 11:56:00 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     chris@achaea.com
>Release:        gcc >= 2.96
>Organization:
>Environment:

>Description:
When you have a function that returns a (different) value
when called, it can't be placed in an expression like this:

 a = -foo() + foo();

without the call on the right being evaluated first which
is contrary to the left to right order of the addition
operator.
>How-To-Repeat:
In the statement:

   int a;
   a = -foo() + foo();

when foo returns a different value each time (say 1 and 2
respectively) the order of evaluation changes the value of
the expression. This only seems to happen when calling the
same routine.
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="blah.i.gz"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="blah.i.gz"

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
YL5fJsdIAAA=



More information about the Gcc-bugs mailing list