public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: c++/3834: const volatile G++ bug gcc-2.95.2 sparc-sun-solaris2.5.1
@ 2002-05-03 14:57 davem
  0 siblings, 0 replies; 2+ messages in thread
From: davem @ 2002-05-03 14:57 UTC (permalink / raw)
  To: don, gcc-bugs, gcc-prs, nobody

Synopsis: const volatile G++ bug gcc-2.95.2 sparc-sun-solaris2.5.1

State-Changed-From-To: open->closed
State-Changed-By: davem
State-Changed-When: Fri May  3 14:57:50 2002
State-Changed-Why:
    Retesting with gcc-3.1 CVS shows that the compiler respects
    the volatile attribute in both the second and third loop
    which appears to be what you think should happen.

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=3834


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

* c++/3834: const volatile G++ bug gcc-2.95.2 sparc-sun-solaris2.5.1
@ 2001-07-26 10:56 don
  0 siblings, 0 replies; 2+ messages in thread
From: don @ 2001-07-26 10:56 UTC (permalink / raw)
  To: gcc-gnats; +Cc: don

>Number:         3834
>Category:       c++
>Synopsis:       const volatile G++ bug gcc-2.95.2 sparc-sun-solaris2.5.1
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          wrong-code
>Submitter-Id:   net
>Arrival-Date:   Thu Jul 26 10:56:01 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     Donald Duncan
>Release:        gcc version 2.95.2 19991024 (release)
>Organization:
>Environment:
sparc-sun-solaris2.5.1
>Description:
The first loop is correct (if nonsensical),
The second is correct, but
the third should look like the second
while it looks like the first!
Volatile has been lost and const prevails.

In the assembly, the line after .LL46 tests
a register but does not update its contents
inside the loop (LL46 & next 5 lines of assembly).

The second loop (LL48) works correctly as
there is a ld instruction getting new data.
(This is a 6 line code generation.)

The third loop (LL51) does not have the
data load instruction like the second loop.
(Should be 6 lines but only 5 lines of code.)
THIS IS THE BUG I FOUND.

I do not know if removing some of the C++
layers in the source will make a difference
to the code generated. I simply tried to
closely match the actual code in my source.

>How-To-Repeat:

/hq/master/util/gcc-2.95.2/bin/g++ -save-temps -S -fverbose-asm -Wall -O
3 gccbug.cxx
>Fix:

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

IyAxICJnY2NidWcuY3h4IgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMSAzIDQKIAog
CgogCiAKIAoKIAoKCgoKIAoKCgoKCgojcHJhZ21hIGlkZW50CSJAKCMpc3RkaW8uaAkxLjY5CTk4
LzA3LzEzIFNNSSIJCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvZmVhdHVyZV90ZXN0cy5oIiAxIDMg
NAogCgoKCgogCiAKIAoKCgoKI3ByYWdtYSBpZGVudAkiQCgjKWZlYXR1cmVfdGVzdHMuaAkxLjE3
CTk3LzEyLzA0IFNNSSIKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9pc2FfZGVmcy5oIiAxIDMgNAog
CgoKCgoKCgojcHJhZ21hIGlkZW50CSJAKCMpaXNhX2RlZnMuaAkxLjE2CTk5LzA1LzI1IFNNSSIK
CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCmV4dGVybiAiQyIgewoKCgogCgoKCgoKCiMgMjE4ICIv
dXNyL2luY2x1ZGUvc3lzL2lzYV9kZWZzLmgiIDMgNAoKCiAKCgoKCgoKIAoKCgoKCgogCgoKCgoK
CgoKCiAKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKIAoKCgoKCiAKCgoKCgoKCiAKCgoKCgoKCgog
CgoKCiMgMzE2ICIvdXNyL2luY2x1ZGUvc3lzL2lzYV9kZWZzLmgiIDMgNAoKCiAKCgoKCgoKCgoK
Cgp9CgoKCiMgMTUgIi91c3IvaW5jbHVkZS9zeXMvZmVhdHVyZV90ZXN0cy5oIiAyIDMgNAoKCgpl
eHRlcm4gIkMiIHsKCgogCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKfQoKCgojIDIyICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzIDQKCiMgMSAiL3Vzci9pbmNs
dWRlL3N5cy92YV9saXN0LmgiIDEgMyA0CiAKCgoKCgoKCiNwcmFnbWEgaWRlbnQJIkAoIyl2YV9s
aXN0LmgJMS4xMQk5Ny8xMS8yMiBTTUkiCgogCgoKCgoKCgoKCgpleHRlcm4gIkMiIHsKCgoKdHlw
ZWRlZiB2b2lkICpfX3ZhX2xpc3Q7CgoKCgoKfQoKCgojIDIzICIvdXNyL2luY2x1ZGUvc3RkaW8u
aCIgMiAzIDQKCiMgMSAiL3Vzci9pbmNsdWRlL3N0ZGlvX3RhZy5oIiAxIDMgNAogCgoKCgoKCgoj
cHJhZ21hIGlkZW50CSJAKCMpc3RkaW9fdGFnLmgJMS4zCTk4LzA0LzIwIFNNSSIKCgpleHRlcm4g
IkMiIHsKCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBGSUxFICBfX0ZJTEU7CgoKCn0KCgoKIyAyNCAi
L3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMyA0CgojIDEgIi91c3IvaW5jbHVkZS9zdGRpb19pbXBs
LmgiIDEgMyA0CiAKCgoKCgoKCiNwcmFnbWEgaWRlbnQJIkAoIylzdGRpb19pbXBsLmgJMS44CTk5
LzA2LzMwIFNNSSIKCgoKCmV4dGVybiAiQyIgewoKCgoKCgoKdHlwZWRlZiBpbnQJc3NpemVfdDsJ
CSAKCgoKIyAzNiAiL3Vzci9pbmNsdWRlL3N0ZGlvX2ltcGwuaCIgMyA0CgoKc3RydWN0IEZJTEUg
CSAKewoKCgoKCXNzaXplX3QJCV9jbnQ7CSAKCXVuc2lnbmVkIGNoYXIJKl9wdHI7CSAKCgl1bnNp
Z25lZCBjaGFyCSpfYmFzZTsJIAoJdW5zaWduZWQgY2hhcglfZmxhZzsJIAoJdW5zaWduZWQgY2hh
cglfZmlsZTsJIAoJdW5zaWduZWQJX19vcmllbnRhdGlvbjoyOyAgCgl1bnNpZ25lZAlfX2lvbm9s
b2NrOjE7CSAKCXVuc2lnbmVkCV9fZmlsbGVyOjU7Cn07CgoKCgp9CgoKCiMgMjUgIi91c3IvaW5j
bHVkZS9zdGRpby5oIiAyIDMgNAoKCiAKCgoKCgoKCgpleHRlcm4gIkMiIHsKCgoKCnR5cGVkZWYJ
X19GSUxFIEZJTEU7CgoKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIGludAlzaXplX3Q7CQkgCgoKCgog
CgoKCgoKdHlwZWRlZglsb25nIGxvbmcJX19sb25nbG9uZ190OwoKCgoKCgoKCgoKCgoKdHlwZWRl
ZiBsb25nCQlvZmZfdDsKCgoKCgoKCnR5cGVkZWYgX19sb25nbG9uZ190CW9mZjY0X3Q7CgoKCgoK
CnR5cGVkZWYgbG9uZwkJZnBvc190OwoKCgoKCgoKdHlwZWRlZiBfX2xvbmdsb25nX3QJZnBvczY0
X3Q7CgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCmV4dGVybiBGSUxFCV9faW9i
WzIwIF07CgoKCgoKCgoKCgoKZXh0ZXJuIHVuc2lnbmVkIGNoYXIJIF9zaWJ1ZltdLCBfc29idWZb
XTsKCgogCiMgMjI3ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CgoKCmV4dGVybiB1bnNpZ25l
ZCBjaGFyCSpfYnVmZW5kdGFiW107CmV4dGVybiBGSUxFCQkqX2xhc3RidWY7CgoKIAojIDI1NyAi
L3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNAoKCgoKZXh0ZXJuIGludAlyZW1vdmUoY29uc3QgY2hh
ciAqKTsKZXh0ZXJuIGludAlyZW5hbWUoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpleHRl
cm4gRklMRQkqdG1wZmlsZSh2b2lkKTsKZXh0ZXJuIGNoYXIJKnRtcG5hbShjaGFyICopOwoKCgpl
eHRlcm4gaW50CWZjbG9zZShGSUxFICopOwpleHRlcm4gaW50CWZmbHVzaChGSUxFICopOwpleHRl
cm4gRklMRQkqZm9wZW4oY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gRklMRQkq
ZnJlb3Blbihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgRklMRSAqKTsKZXh0ZXJuIHZvaWQJ
c2V0YnVmKEZJTEUgKiwgY2hhciAqKTsKCgpleHRlcm4gdm9pZCBzZXRidWZmZXIoRklMRSAqLCBj
aGFyICosIHNpemVfdCk7CmV4dGVybiBpbnQgc2V0bGluZWJ1ZihGSUxFICopOwoKZXh0ZXJuIGlu
dAlzZXR2YnVmKEZJTEUgKiwgY2hhciAqLCBpbnQsIHNpemVfdCk7CiAKZXh0ZXJuIGludAlmcHJp
bnRmKEZJTEUgKiwgY29uc3QgY2hhciAqLCAuLi4pOwogCmV4dGVybiBpbnQJZnNjYW5mKEZJTEUg
KiwgY29uc3QgY2hhciAqLCAuLi4pOwogCmV4dGVybiBpbnQJcHJpbnRmKGNvbnN0IGNoYXIgKiwg
Li4uKTsKIApleHRlcm4gaW50CXNjYW5mKGNvbnN0IGNoYXIgKiwgLi4uKTsKCgoKIApleHRlcm4g
aW50CXNucHJpbnRmKGNoYXIgKiwgc2l6ZV90LCBjb25zdCBjaGFyICosIC4uLik7CgogCmV4dGVy
biBpbnQJc3ByaW50ZihjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKIApleHRlcm4gaW50CXNz
Y2FuZihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKZXh0ZXJuIGludAl2ZnByaW50
ZihGSUxFICosIGNvbnN0IGNoYXIgKiwgX192YV9saXN0KTsKZXh0ZXJuIGludAl2cHJpbnRmKGNv
bnN0IGNoYXIgKiwgX192YV9saXN0KTsKCgoKZXh0ZXJuIGludAl2c25wcmludGYoY2hhciAqLCBz
aXplX3QsIGNvbnN0IGNoYXIgKiwgX192YV9saXN0KTsKCmV4dGVybiBpbnQJdnNwcmludGYoY2hh
ciAqLCBjb25zdCBjaGFyICosIF9fdmFfbGlzdCk7CmV4dGVybiBpbnQJZmdldGMoRklMRSAqKTsK
ZXh0ZXJuIGNoYXIJKmZnZXRzKGNoYXIgKiwgaW50LCBGSUxFICopOwpleHRlcm4gaW50CWZwdXRj
KGludCwgRklMRSAqKTsKZXh0ZXJuIGludAlmcHV0cyhjb25zdCBjaGFyICosIEZJTEUgKik7CmV4
dGVybiBpbnQJZ2V0YyhGSUxFICopOwpleHRlcm4gaW50CWdldGNoYXIodm9pZCk7CmV4dGVybiBj
aGFyCSpnZXRzKGNoYXIgKik7CmV4dGVybiBpbnQJcHV0YyhpbnQsIEZJTEUgKik7CmV4dGVybiBp
bnQJcHV0Y2hhcihpbnQpOwpleHRlcm4gaW50CXB1dHMoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGlu
dAl1bmdldGMoaW50LCBGSUxFICopOwpleHRlcm4gc2l6ZV90CWZyZWFkKHZvaWQgKiwgc2l6ZV90
LCBzaXplX3QsIEZJTEUgKik7CmV4dGVybiBzaXplX3QJZndyaXRlKGNvbnN0IHZvaWQgKiwgc2l6
ZV90LCBzaXplX3QsIEZJTEUgKik7CmV4dGVybiBpbnQJZmdldHBvcyhGSUxFICosIGZwb3NfdCAq
KTsKZXh0ZXJuIGludAlmc2VlayhGSUxFICosIGxvbmcsIGludCk7CmV4dGVybiBpbnQJZnNldHBv
cyhGSUxFICosIGNvbnN0IGZwb3NfdCAqKTsKZXh0ZXJuIGxvbmcJZnRlbGwoRklMRSAqKTsKZXh0
ZXJuIHZvaWQJcmV3aW5kKEZJTEUgKik7CmV4dGVybiB2b2lkCWNsZWFyZXJyKEZJTEUgKik7CmV4
dGVybiBpbnQJZmVvZihGSUxFICopOwpleHRlcm4gaW50CWZlcnJvcihGSUxFICopOwpleHRlcm4g
dm9pZAlwZXJyb3IoY29uc3QgY2hhciAqKTsKCgpleHRlcm4gaW50CV9fZmlsYnVmKEZJTEUgKik7
CmV4dGVybiBpbnQJX19mbHNidWYoaW50LCBGSUxFICopOwoKCiAKCgoKCgpleHRlcm4gRklMRQkq
ZmRvcGVuKGludCwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGNoYXIJKmN0ZXJtaWQoY2hhciAqKTsK
ZXh0ZXJuIGludAlmaWxlbm8oRklMRSAqKTsKCgoKIAoKCiMgMzU4ICIvdXNyL2luY2x1ZGUvc3Rk
aW8uaCIgMyA0CgoKIAoKCgoKZXh0ZXJuIEZJTEUJKnBvcGVuKGNvbnN0IGNoYXIgKiwgY29uc3Qg
Y2hhciAqKTsKZXh0ZXJuIGNoYXIJKmN1c2VyaWQoY2hhciAqKTsKZXh0ZXJuIGNoYXIJKnRlbXBu
YW0oY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gaW50CWdldG9wdChpbnQsIGNo
YXIgKmNvbnN0ICosIGNvbnN0IGNoYXIgKik7CgpleHRlcm4gaW50CWdldHN1Ym9wdChjaGFyICoq
LCBjaGFyICpjb25zdCAqLCBjaGFyICoqKTsKCmV4dGVybiBjaGFyCSpvcHRhcmc7CmV4dGVybiBp
bnQJb3B0aW5kLCBvcHRlcnIsIG9wdG9wdDsKZXh0ZXJuIGludAlnZXR3KEZJTEUgKik7CmV4dGVy
biBpbnQJcHV0dyhpbnQsIEZJTEUgKik7CmV4dGVybiBpbnQJcGNsb3NlKEZJTEUgKik7CgoKCiAK
CgoKZXh0ZXJuIGludAlmc2Vla28oRklMRSAqLCBvZmZfdCwgaW50KTsKZXh0ZXJuIG9mZl90CWZ0
ZWxsbyhGSUxFICopOwoKCiAKCgoKCgpleHRlcm4gRklMRQkqZm9wZW42NChjb25zdCBjaGFyICos
IGNvbnN0IGNoYXIgKik7CmV4dGVybiBGSUxFCSpmcmVvcGVuNjQoY29uc3QgY2hhciAqLCBjb25z
dCBjaGFyICosIEZJTEUgKik7CmV4dGVybiBGSUxFCSp0bXBmaWxlNjQodm9pZCk7CmV4dGVybiBp
bnQJZmdldHBvczY0KEZJTEUgKiwgZnBvczY0X3QgKik7CmV4dGVybiBpbnQJZnNldHBvczY0KEZJ
TEUgKiwgY29uc3QgZnBvczY0X3QgKik7CmV4dGVybiBpbnQJZnNlZWtvNjQoRklMRSAqLCBvZmY2
NF90LCBpbnQpOwpleHRlcm4gb2ZmNjRfdAlmdGVsbG82NChGSUxFICopOwoKCiMgNTE1ICIvdXNy
L2luY2x1ZGUvc3RkaW8uaCIgMyA0CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyA1Njcg
Ii91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKCgoKCgp9CgoKCiMgNSAiZ2NjYnVnLmN4eCIgMgoK
CnR5cGVkZWYgc3RydWN0ICBSZWdTdHJ1Y3QKewogICAgY29uc3QgICAgICAgICAgICAgICBpbnQg
Y2hpcFJlZzsgICAgICAgICAgICAgCiAgICAgICAgICAgIHZvbGF0aWxlICAgIGludCBjb250cm9s
UmVnOyAgICAgICAgICAKICAgIGNvbnN0ICAgdm9sYXRpbGUgICAgaW50IHN0YXR1c1JlZzsgICAg
ICAgICAgIAp9OwoKY2xhc3MgRGV2aWNlCnsKcHVibGljOgogICAgc3RydWN0ICBSZWdTdHJ1Y3Qq
ICB0aGVSZWc7CgogICBEZXZpY2UgKCkgOgogICB0aGVSZWcgKCAoc3RydWN0ICBSZWdTdHJ1Y3Qq
KSAweDAxMjM0NTY3KSAgICAgCiAgIHt9OwoKaW5saW5lIGJvb2wgaXNDaGlwUmVnICgpICAgIHsg
cmV0dXJuIHRoZVJlZy0+Y2hpcFJlZyAmIDB4MTAwOyB9OwppbmxpbmUgYm9vbCBpc0NvbnRyb2xS
ZWcgKCkgeyByZXR1cm4gdGhlUmVnLT5jb250cm9sUmVnICYgMHgxMDA7IH07CmlubGluZSBib29s
IGlzU3RhdHVzUmVnICgpICB7IHJldHVybiB0aGVSZWctPnN0YXR1c1JlZyAmIDB4MTAwOyB9Owp9
OwoKY2xhc3MgU3lzdGVtCnsKICAgIERldmljZSogdGhlRGV2OwpwdWJsaWM6CiAgICBTeXN0ZW0g
KCkgOgogICAgdGhlRGV2IChuZXcgRGV2aWNlKQogICAgeyB9OwoKICAgIHZvaWQgQnVnVGVzdCh2
b2lkKTsKfTsKCnZvaWQgU3lzdGVtOjpCdWdUZXN0ICh2b2lkKQp7CiAgICBpbnQgICAgIGk7CiAg
ICBwcmludGYgKCJIZXJlIHdlIGdvIVxuIik7CgogICAgcHJpbnRmICgiVHJ5aW5nIFwnY29uc3Qg
Q2hpcFJlZ1wnXG4iKTsKICAgIGZvciAoaSA9IDEwMDsgdGhlRGV2LT5pc0NoaXBSZWcoKTsgaS0t
KQogICAgICAgIGlmIChpID09IDApCiAgICAgICAgewogICAgICAgICAgICBwcmludGYgKCJjb25z
dCBDaGlwUmVnIEZhaWxlZFxuIik7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICBw
cmludGYgKCJUcnlpbmcgXCd2b2xhdGlsZSBjb250cm9sUmVnXCdcbiIpOwogICAgZm9yIChpID0g
MTAwOyB0aGVEZXYtPmlzQ29udHJvbFJlZygpOyBpLS0pCiAgICAgICAgaWYgKGkgPT0gMCkKICAg
ICAgICB7CiAgICAgICAgICAgIHByaW50ZiAoInZvbGF0aWxlIENvbnRyb2xSZWcgRmFpbGVkXG4i
KTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgIHByaW50ZiAoIlRyeWluZyBcJ2Nv
bnN0IHZvbGF0aWxlIHN0YXR1c1JlZ1wnXG4iKTsKICAgIGZvciAoaSA9IDEwMDsgdGhlRGV2LT5p
c1N0YXR1c1JlZygpOyBpLS0pCiAgICAgICAgaWYgKGkgPT0gMCkKICAgICAgICB7CiAgICAgICAg
ICAgIHByaW50ZiAoImNvbnN0IHZvbGF0aWxlIHN0YXR1c1JlZyBGYWlsZWRcbiIpOwogICAgICAg
ICAgICBicmVhazsKICAgICAgICB9Cn0KCgo=


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

end of thread, other threads:[~2002-05-03 21:57 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-05-03 14:57 c++/3834: const volatile G++ bug gcc-2.95.2 sparc-sun-solaris2.5.1 davem
  -- strict thread matches above, loose matches on Subject: below --
2001-07-26 10:56 don

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).