Description of problem: One of the first things lu_homedir_populate () in the attached source does is aborting if (error == NULL || *error != NULL). AFAICS in the assembler output, it is compiled as if (error == NULL || error != NULL) This is one of my first encounters with S/3[79]0 assembly, so I apologize if I have understood it wrong. Version-Release number of selected component (if applicable): gcc-3.2.3-46 Seems to work fine with gcc-3.4.2-5.
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