Bug 135715
Summary: | Miscompilation (dropped read from memory) | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Product: | Red Hat Enterprise Linux 3 | Reporter: | Miloslav Trmač <mitr> | ||||||||
Component: | gcc | Assignee: | Jakub Jelinek <jakub> | ||||||||
Status: | CLOSED ERRATA | QA Contact: | |||||||||
Severity: | high | Docs Contact: | |||||||||
Priority: | medium | ||||||||||
Version: | 3.0 | CC: | laroche | ||||||||
Target Milestone: | --- | ||||||||||
Target Release: | --- | ||||||||||
Hardware: | s390 | ||||||||||
OS: | Linux | ||||||||||
Whiteboard: | |||||||||||
Fixed In Version: | Doc Type: | Bug Fix | |||||||||
Doc Text: | Story Points: | --- | |||||||||
Clone Of: | Environment: | ||||||||||
Last Closed: | 2004-11-02 21:41:56 UTC | Type: | --- | ||||||||
Regression: | --- | Mount Type: | --- | ||||||||
Documentation: | --- | CRM: | |||||||||
Verified Versions: | Category: | --- | |||||||||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||||||
Cloudforms Team: | --- | Target Upstream Version: | |||||||||
Embargoed: | |||||||||||
Bug Depends On: | |||||||||||
Bug Blocks: | 135625 | ||||||||||
Attachments: |
|
Description
Miloslav Trmač
2004-10-14 16:54:23 UTC
Created attachment 105206 [details] apputil.i.bz2 Created attachment 105208 [details]
The command line and output of gcc -v ... used to produce apputil.i
The instruction disappears during reload. How urgent is this (i.e. can it wait until FC3/RHEL4b2 are done)? Simplified testcase: extern void abort (void); void foo (int a, int b, int c, int d, int e, void **f) { char g[4096]; if (f == 0 || *f != 0) abort (); } int main (void) { void *x = 0; foo (0, 1, 2, 3, 4, &x); return 0; } Reload changes: (insn:QI 21 54 22 (parallel[ (set (reg:CCZ 33 %cc) (compare:CCZ (mem/f:SI (reg/f:SI 32 %ap) [4 f+0 S4 A32]) (const_int 0 [0x0]))) (set (reg/v/f:SI 45) (mem/f:SI (reg/f:SI 32 %ap) [4 f+0 S4 A32])) ] ) 13 {*icm15} (nil) (nil)) to (insn:QI 21 62 22 (parallel[ (set (reg:CCZ 33 %cc) (compare:CCZ (mem/f:SI (reg:SI 2 %r2) [4 f+0 S4 A32]) (const_int 0 [0x0]))) (set (reg/v/f:SI 1 %r1 [45]) (reg:SI 2 %r2)) ] ) 13 {*icm15} (nil) (nil)) which is wrong (note that originally the first operand of COMPARE and second operand of SET were the same, but after the reload they are different. Created attachment 105717 [details]
s390 reload dup fix
This patch seems to work for me, though haven't bootstrapped it yet to see
whether there are any follow-ups needed.
Though, the area of the code is unchanged till current HEAD.
Should be fixed in gcc-3.2.3-47. Fix confirmed, thanks! An advisory has been issued which should help the problem described in this bug report. This report is therefore being closed with a resolution of ERRATA. For more information on the solution and/or where to find the updated files, please follow the link below. You may reopen this bug report if the solution does not work for you. http://rhn.redhat.com/errata/RHBA-2004-584.html |