public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: target/3850: gcc 2.73-3.0  code generation on HP and SUN WRONG
@ 2001-07-28 19:54 aoliva
  0 siblings, 0 replies; 2+ messages in thread
From: aoliva @ 2001-07-28 19:54 UTC (permalink / raw)
  To: daniel, gcc-bugs, gcc-prs, nobody

Synopsis: gcc 2.73-3.0  code generation on HP and SUN WRONG

State-Changed-From-To: open->closed
State-Changed-By: aoliva
State-Changed-When: Sat Jul 28 19:54:45 2001
State-Changed-Why:
    It is the expectation that is wrong.  There's no sequence point between arguments to a function call.  Not only can they be executed in any order, but also, their evaluations can be interleaved.  The C Standard says that this code invokes undefined behavior, so as to place no limits on the amount of optimization a compiler can do on this kind of code.  If your code depends on any particular order of execution, the code is in error, and should be fixed by inserting sequence points between expressions that modify the same variable.  There's a sequence point between consecutive commands (semicolon) and between expressions separated by the comma operator (comma), but not when the comma is only used to separate arguments.

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=3850&database=gcc


^ permalink raw reply	[flat|nested] 2+ messages in thread

* target/3850: gcc 2.73-3.0  code generation on HP and SUN WRONG
@ 2001-07-27 14:36 daniel
  0 siblings, 0 replies; 2+ messages in thread
From: daniel @ 2001-07-27 14:36 UTC (permalink / raw)
  To: gcc-gnats

>Number:         3850
>Category:       target
>Synopsis:       gcc 2.73-3.0  code generation on HP and SUN WRONG
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    unassigned
>State:          open
>Class:          wrong-code
>Submitter-Id:   net
>Arrival-Date:   Fri Jul 27 14:36:01 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     Daniel Sittig
>Release:        unknown-1.0
>Organization:
>Environment:
On HP: HPUX 10.20, PA85000	
ON SUN: Solaris 2.6, UII 
>Description:
The code generation for example printf function call
is wrong: ( it is not printf specific ! )

int a;
printf("a=%d a=%d", (a=1,a), (a=2,a));

The expected output shall be : a=1 a=2

But this works only on a x86 , both UII and HP PA fails.
I was dissassembling it and found that ALL Gcc we have 
create ONE memory reference for variable 'a'. 
I was doublechecking with HP 'cc' and it created correctly
2 memory references thus displaying the expected result.
Linux is applying a 'pushd' before loading '2' to %eax.
This also works and the example above works correctly.

>How-To-Repeat:
gcc mini.c -g
gdb a.out
disassemble
>Fix:
No fix known. 
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="mini.c"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="mini.c"

I2luY2x1ZGUgPHN0ZGlvLmg+CgoKaW50IG1haW4oKQp7CiAgLy8gaW50IGE7CiAgdm9sYXRpbGUg
aW50IGE7CiAgcHJpbnRmKCJhPSVkIGE9JWRcbiIsIChhPTEsYSksIChhPTIsYSkpOwogIHJldHVy
biAwOwp9CgovKgoKU1VOOiAgZ2NjMi45NS4xCgoweDEwYTU0IDxtYWluPjogc2F2ZSAgJXNwLCAt
MTIwLCAlc3AKMHgxMGE1OCA8bWFpbis0PjogICAgICAgbW92ICAxLCAlbzAKMHgxMGE1YyA8bWFp
bis4PjogICAgICAgc3QgICVvMCwgWyAlZnAgKyAtMjAgXQoweDEwYTYwIDxtYWluKzEyPjogICAg
ICBtb3YgIDIsICVvMAoweDEwYTY0IDxtYWluKzE2PjogICAgICBzdCAgJW8wLCBbICVmcCArIC0y
MCBdCjB4MTBhNjggPG1haW4rMjA+OiAgICAgIHNldGhpICAlaGkoMHgxMTQwMCksICVvMQoweDEw
YTZjIDxtYWluKzI0PjogICAgICBvciAgJW8xLCAweDFlOCwgJW8wICAgICAhIDB4MTE1ZTggPF9s
aWJfdmVyc2lvbis4PgoweDEwYTcwIDxtYWluKzI4PjogICAgICBsZCAgWyAlZnAgKyAtMjAgXSwg
JW8xCjB4MTBhNzQgPG1haW4rMzI+OiAgICAgIGxkICBbICVmcCArIC0yMCBdLCAlbzIKMHgxMGE3
OCA8bWFpbiszNj46ICAgICAgY2FsbCAgMHgyMTY3OCA8cHJpbnRmPgoweDEwYTdjIDxtYWluKzQw
PjogICAgICBub3AgCjB4MTBhODAgPG1haW4rNDQ+OiAgICAgIGNsciAgJWkwICAgICAgICAhIDB4
MAoweDEwYTg0IDxtYWluKzQ4PjogICAgICBiICAweDEwYThjIDxtYWluKzU2PgoweDEwYTg4IDxt
YWluKzUyPjogICAgICBub3AgCjB4MTBhOGMgPG1haW4rNTY+OiAgICAgIHJldCAKMHgxMGE5MCA8
bWFpbis2MD46ICAgICAgcmVzdG9yZSAKCgpIUCAnY2MnCgo7OzsgICBwcmludGYoImE9JWQgYT0l
ZFxuIiwgKGE9MSxhKSwgKGE9MixhKSk7CjB4MzIyYyA8bWFpbis4PjogICAgICAgIGFkZGlsIEwn
LTB4ODAwLCVkcCwlcjEKMHgzMjMwIDxtYWluKzEyPjogICAgICAgbGRvIDB4NzM4KCVyMSksJXIy
NgoweDMyMzQgPG1haW4rMTY+OiAgICAgICBsZGkgMSwlcjEKMHgzMjM4IDxtYWluKzIwPjogICAg
ICAgc3R3ICVyMSwtMHgzOCglc3ApCjB4MzIzYyA8bWFpbisyND46ICAgICAgIGxkdyAtMHgzOCgl
c3ApLCVyMjUKMHgzMjQwIDxtYWluKzI4PjogICAgICAgbGRpIDIsJXIzMQoweDMyNDQgPG1haW4r
MzI+OiAgICAgICBzdHcgJXIzMSwtMHgzOCglc3ApCjB4MzI0OCA8bWFpbiszNj46ICAgICAgIGxk
dyAtMHgzOCglc3ApLCVyMjQKMHgzMjRjIDxtYWluKzQwPjogICAgICAgbGRpbCBMJzB4MzAwMCwl
cjMxCjB4MzI1MCA8bWFpbis0ND46ICAgICAgIGJlLGwgMHgyMTQoJXNyNCwlcjMxKSwlc3IwLCVy
MzEKMHgzMjU0IDxtYWluKzQ4PjogICAgICAgY29weSAlcjMxLCVycAo7OzsgICByZXR1cm4gMDsK
CgpIUCAnZ2NjMi45NS4xJwoKOzs7ICAgcHJpbnRmKCJhPSVkIGE9JWRcbiIsIChhPTEsYSksIChh
PTIsYSkpOwoweDMyZjAgPG1haW4rMjQ+OiAgICAgICBsZGkgMSwlcjE5CjB4MzJmNCA8bWFpbisy
OD46ICAgICAgIHN0dyAlcjE5LDgoJXIzKQoweDMyZjggPG1haW4rMzI+OiAgICAgICBsZGkgMiwl
cjE5CjB4MzJmYyA8bWFpbiszNj46ICAgICAgIHN0dyAlcjE5LDgoJXIzKQoweDMzMDAgPG1haW4r
NDA+OiAgICAgICBsZGlsIEwnMHgyODAwLCVyMTkKMHgzMzA0IDxtYWluKzQ0PjogICAgICAgbGRv
IDB4MmEwKCVyMTkpLCVyMjYKMHgzMzA4IDxtYWluKzQ4PjogICAgICAgbGR3IDgoJXIzKSwlcjI1
CjB4MzMwYyA8bWFpbis1Mj46ICAgICAgIGxkdyA4KCVyMyksJXIyNAoweDMzMTAgPG1haW4rNTY+
OiAgICAgICBiLGwgMHgzMmMwIDxwcmludGY+LCVycAoweDMzMTQgPG1haW4rNjA+OiAgICAgICBu
b3AKOzs7ICAgcmV0dXJuIDA7CgpMSU5VWCAnZ2NjMi45NS4xJwoKMHg4MDQ4NDkwIDxtYWluPjog
ICAgICAgcHVzaGwgICVlYnAKMHg4MDQ4NDkxIDxtYWluKzE+OiAgICAgbW92bCAgICVlc3AsJWVi
cAoweDgwNDg0OTMgPG1haW4rMz46ICAgICBzdWJsICAgJDB4NCwlZXNwCjB4ODA0ODQ5NiA8bWFp
bis2PjogICAgIG1vdmwgICAkMHgyLDB4ZmZmZmZmZmMoJWVicCkKMHg4MDQ4NDlkIDxtYWluKzEz
PjogICAgbW92bCAgIDB4ZmZmZmZmZmMoJWVicCksJWVheAoweDgwNDg0YTAgPG1haW4rMTY+OiAg
ICBwdXNobCAgJWVheAoweDgwNDg0YTEgPG1haW4rMTc+OiAgICBtb3ZsICAgJDB4MSwweGZmZmZm
ZmZjKCVlYnApCjB4ODA0ODRhOCA8bWFpbisyND46ICAgIG1vdmwgICAweGZmZmZmZmZjKCVlYnAp
LCVlYXgKMHg4MDQ4NGFiIDxtYWluKzI3PjogICAgcHVzaGwgICVlYXgKMHg4MDQ4NGFjIDxtYWlu
KzI4PjogICAgcHVzaGwgICQweDgwNDg1MmMKMHg4MDQ4NGIxIDxtYWluKzMzPjogICAgY2FsbCAg
IDB4ODA0ODNiYyA8cHJpbnRmPgoweDgwNDg0YjYgPG1haW4rMzg+OiAgICBhZGRsICAgJDB4Yywl
ZXNwCjB4ODA0ODRiOSA8bWFpbis0MT46ICAgIHhvcmwgICAlZWF4LCVlYXgKMHg4MDQ4NGJiIDxt
YWluKzQzPjogICAgam1wICAgIDB4ODA0ODRjMCA8bWFpbis0OD4KMHg4MDQ4NGJkIDxtYWluKzQ1
PjogICAgbGVhbCAgIDB4MCglZXNpKSwlZXNpCjB4ODA0ODRjMCA8bWFpbis0OD46ICAgIG1vdmwg
ICAlZWJwLCVlc3AKMHg4MDQ4NGMyIDxtYWluKzUwPjogICAgcG9wbCAgICVlYnAKMHg4MDQ4NGMz
IDxtYWluKzUxPjogICAgcmV0ICAgIAoqLwo=


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2001-07-28 19:54 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-07-28 19:54 target/3850: gcc 2.73-3.0 code generation on HP and SUN WRONG aoliva
  -- strict thread matches above, loose matches on Subject: below --
2001-07-27 14:36 daniel

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).