This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
c/497: gcc generates wrong code for Motorola M*Core
- To: gcc-gnats at gcc dot gnu dot org
- Subject: c/497: gcc generates wrong code for Motorola M*Core
- From: jmarin at jmp dot fi
- Date: 30 Aug 2000 20:37:53 -0000
- Cc: skanto at jmp dot fi
- Reply-To: jmarin at jmp dot fi
- Resent-Cc: gcc-prs at gcc dot gnu dot org, gcc-bugs at gcc dot gnu dot org, skanto at jmp dot fi
- Resent-Reply-To: gcc-gnats@gcc.gnu.org, jmarin@jmp.fi
>Number: 497
>Category: c
>Synopsis: gcc generates wrong code for Motorola M*Core
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: wrong-code
>Submitter-Id: net
>Arrival-Date: Wed Aug 30 13:46:00 PDT 2000
>Closed-Date:
>Last-Modified:
>Originator: Jukka Marin
>Release: gcc version 2.96 20000814 (experimental)
>Organization:
>Environment:
NetBSD 1.4.2/i386, cross-gcc for Motorola M*Core CPU
>Description:
The function exit time, gcc forgets to pull M*Core registers
off the stack and adjust the stack pointer. It seems this
happens when optimization is enabled AND the function has
several exit points (return statements).
A more detailed description with code snippets is included.
>How-To-Repeat:
Compile the sample functions.
>Fix:
Not known - disabling optimization seems to "fix" the
problem, but the code generated without -On looks quite
horrible at times.. :-)
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="bug"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="bug"
SSB0aGluayBnY2MgcHJvZHVjZXMgaW5jb3JyZWN0IGNvZGUuICBTZWUgdGhpczoKCmludCB0ZXN0
MSh1X2ludDMyX3QgbWVvdykKewogIGludCBpLCBqLCBrOwoKICBkZWIoKTsKICBpZiAobWVvdyA+
IDgpIHJldHVybigtMSk7CiAgcmV0dXJuKDE8PChtZW93JjB4MDcpKTsKCn0KCmludCB0ZXN0Mih1
X2ludDMyX3QgbWVvdykKewogIGludCBpLCBqLCBrOwoKICBkZWIoKTsKICBpZiAobWVvdyA+IDgp
IG1lb3cgPSAwOwogIHJldHVybigxPDwobWVvdyYweDA3KSk7Cgp9CgoKMDAwMDA4M2MgPHRlc3Qx
PjoKIDgzYzogICAyNDcwICAgICAgICAgICAgc3ViaSAgICByMCwgOAogODNlOiAgIDAwN2UgICAg
ICAgICAgICBzdG0gICAgIHIxNC1yMTUsIChyMCkKIDg0MDogICAxMjJlICAgICAgICAgICAgbW92
ICAgICByMTQsIHIyCiA4NDI6ICAgN2YwYSAgICAgICAgICAgIGpzcmkgICAgMHgwICAgICAvLyBm
cm9tIGFkZHJlc3MgcG9vbCBhdCAweDg2YwogODQ0OiAgIDYwODcgICAgICAgICAgICBtb3ZpICAg
IHI3LCA4CiA4NDY6ICAgMGNlNyAgICAgICAgICAgIGNtcGhzICAgcjcsIHIxNAogODQ4OiAgIGUw
MDIgICAgICAgICAgICBidCAgICAgIDB4ODRlCiA4NGE6ICAgMmMwMiAgICAgICAgICAgIGJtYXNr
aSAgcjIsIDAKIDg0YzogICAwMGNmICAgICAgICAgICAgam1wICAgICByMTUKIDg0ZTogICAyZTdl
ICAgICAgICAgICAgYW5kaSAgICByMTQsIDcKIDg1MDogICAxM2UyICAgICAgICAgICAgYmdlbnIg
ICByMiwgcjE0CiA4NTI6ICAgMDBjZiAgICAgICAgICAgIGptcCAgICAgcjE1CgowMDAwMDg1NCA8
dGVzdDI+OgogODU0OiAgIDI0NzAgICAgICAgICAgICBzdWJpICAgIHIwLCA4CiA4NTY6ICAgMDA3
ZSAgICAgICAgICAgIHN0bSAgICAgcjE0LXIxNSwgKHIwKQogODU4OiAgIDEyMmUgICAgICAgICAg
ICBtb3YgICAgIHIxNCwgcjIKIDg1YTogICA3ZjA0ICAgICAgICAgICAganNyaSAgICAweDAgICAg
IC8vIGZyb20gYWRkcmVzcyBwb29sIGF0IDB4ODZjCiA4NWM6ICAgNjA4NyAgICAgICAgICAgIG1v
dmkgICAgcjcsIDgKIDg1ZTogICAwY2U3ICAgICAgICAgICAgY21waHMgICByNywgcjE0CiA4NjA6
ICAgMDFkZSAgICAgICAgICAgIGNscmYgICAgcjE0CiA4NjI6ICAgMmU3ZSAgICAgICAgICAgIGFu
ZGkgICAgcjE0LCA3CiA4NjQ6ICAgMTNlMiAgICAgICAgICAgIGJnZW5yICAgcjIsIHIxNAogODY2
OiAgIDAwNmUgICAgICAgICAgICBsZG0gICAgIHIxNC1yMTUsIChyMCkKIDg2ODogICAyMDcwICAg
ICAgICAgICAgYWRkaSAgICByMCwgOAogODZhOiAgIDAwY2YgICAgICAgICAgICBqbXAgICAgIHIx
NQoKQXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoIHJvdXRpbmUsIGdjYyBwdXNoZXMgcjE0IGFuZCBy
MTUgb24gc3RhY2sgKHIxNSBpcwpwdXNoZWQgYmVjYXVzZSBpdCdzIHVzZWQgYXMgdGhlIHJldHVy
biBhZGRyZXNzIHJlZ2lzdGVyIGJ5IG1jb3JlIGFuZCBJIGNhbGwKdGhlIGRlYigpIGZ1bmN0aW9u
LCBzbyByMTUgaGFzIHRvIGJlIHB1c2hlZCkuICA4IGJ5dGVzIGFyZSBhbGxvY2F0ZWQgb24Kc3Rh
Y2sgZm9yIHRoZSB0d28gcmVnaXN0ZXJzLCB0aGlzIGlzIGZpbmUuCgpCVVQhICBPbmx5IHRlc3Qy
KCkgcmVzdG9yZXMgdGhlIHIxNCBhbmQgcjE1IHJlZ2lzdGVycyBhbmQgZGVhbGxvY2F0ZXMgdGhl
CnN0YWNrIHNwYWNlLiAgVGhlIG9ubHkgZGlmZmVyZW5jZSBpbiB0aGUgcm91dGluZXMgaXMgdGhl
ICJleHRyYSIgcmV0dXJuKCkKaW4gdGhlIGNvZGUuICBJIHNlZSB0aGUgc2FtZSBwaGVub21lbm9u
IGluIG15ICJyZWFsIiBjb2RlIC0gaXQgd29ya2VkIE9LCnVudGlsIEkgYWRkZWQgYW5vdGhlciBy
ZXR1cm4gcG9pbnQgaW4gdGhlIGZ1bmN0aW9uLgoKSSdtIHVzaW5nIHRoZSBlZ2NzIHNvdXJjZSBm
cm9tIDAwMDgxNCBhbmQgdGhlIGZvbGxvd2luZyBjb21waWxlciBvcHRpb25zOgoKbWNvcmUtZWxm
LWdjYyAtV2FsbCAtYyAtTzYgLW1iaWctZW5kaWFuIC1tMjEwIC1mbm8tYnVpbHRpbiAtSS4uL2lu
Y2x1ZGUKYm9vdC5jIC1vIGJvb3QubwptY29yZS1lbGYtZ2NjIC1XbCwtTWFwLGJvb3QubWFwLC1U
LGJvb3QubG5rIC1ub3N0ZGxpYiAgLW9mb3JtYXQ9c3JlYyBzdHViLm8KYm9vdC5vIC1vYm9vdC5z
MTkgLWxnY2MKCkkgZG9uJ3Qgd2FudCB0byBiZWxpZXZlIHRoYXQgZ2NjIHByb2R1Y2VzIGJyb2tl
biBjb2RlLCBidXQgdGhhdCdzIGhvdyBpdApsb29rcyB0byBtZS4uCg==