[Bug debug/44023] -fcompare-debug failure (length) for alphaev67 target
--- Comment #7 from jakub at gcc dot gnu dot org 2010-05-07 20:25 --- Slightly more reduced testcase: void foo (unsigned f, long v, unsigned *w, unsigned a, unsigned b, unsigned e, unsigned c, unsigned d) { unsigned h = v / 4, x[16]; while (f < h) { unsigned i; f++; a |= (a >> 30); d = (d << 30) | ((unsigned) d >> 30); c = (c << 30) | ((unsigned) c >> 30); b = 30 | ((unsigned) b >> 30); d += a = (a << 30) | ((unsigned) a >> 2); c += ((d << 5) | (d >> 27)) + ((e & (a ^ b))) + 0x5a827999 + x[12]; a += (c & e); c = 30 | ((unsigned) c); i = x[5] ^ x[7] ^ x[8] ^ x[3]; x[5] = (i << 1) | ((unsigned) i >> 31); i = x[6] ^ x[2] ^ x[14] ^ x[13]; x[6] = (i << 1) | (i >> 31); b += (c | (c >> 5)) + (d ^ e) + 0x6ed9eba1 + (x[7] = (i << 1) | ((unsigned) i >> 31)); x[8] = i | 1; e += (a | 5) + b + (i = x[9] ^ x[6], x[10] = (i << (unsigned) i)); e = 30 | ((unsigned) e >> 30); i = x[12] ^ x[14] ^ x[12] ^ x[12], (x[12] = 1 | ((unsigned) i)); i = x[13] ^ x[5] ^ x[10], (x[13] = (i << (unsigned) 1)); i = x[2] ^ x[7] ^ x[12], (x[15] = i | ((unsigned) i >> 1)); i = x[2] ^ x[0] ^ x[13], (x[0] = (i << 1) | 31); e = (e << 30) | 2; i = x[14] ^ x[2] ^ x[15], (x[2] = i | 1); x[3] = i | ((unsigned) i); i = x[14] ^ x[12] ^ x[4], (x[4] = 1 | ((unsigned) i >> 1)); x[5] = i | 1; e = (e << 30) | 30; b += (5 | ((unsigned) e >> 5)) + 0x8f1bbcdc + (x[9] = (i | ((unsigned) i >> 1))); i = x[2] ^ (x [10] = ((i << 1) | (i >> 1))); x[13] = (i | ((unsigned) i >> 1)); (i = x[14] ^ x[0] ^ x[14], (x[14] = ((i << 1) | 31))); a = *w += a; } } -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44023
[Bug debug/44023] -fcompare-debug failure (length) for alphaev67 target
--- Comment #6 from ubizjak at gmail dot com 2010-05-07 17:12 --- The differences in IRA insn stream dumps are then: [...] -$28:DI=[$30:DI+0x78] -$28:DI=leu($28:DI,$16:DI) -[$30:DI+0x70]=$28:DI +$0:DI=[$30:DI+0x78] +$0:DI=leu($0:DI,$16:DI) +[$30:DI+0x70]=$0:DI [...] -$28:SI=0x8f1bbcdc -$17:SI=$23:SI+$28:SI +$24:SI=0x8f1bbcdc +$17:SI=$23:SI+$24:SI [...] -$8:SI=[$30:DI+0x68] -$24:SI=$8:SI+$25:SI +$27:SI=[$30:DI+0x68] +$24:SI=$27:SI+$25:SI [...] -$12:DI=[$30:DI+0x70] -pc={($12:DI==0)?L598:pc} +$1:DI=[$30:DI+0x70] +pc={($1:DI==0)?L712:pc} [...] -$13:DI=[$30:DI+0x80] -[$13:DI]=$9:SI +$2:DI=[$30:DI+0x80] +[$2:DI]=$9:SI -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44023
[Bug debug/44023] -fcompare-debug failure (length) for alphaev67 target
--- Comment #5 from ubizjak at gmail dot com 2010-05-07 17:04 --- For some reason, IRA chooses different reload registers. --- t1.c.190r.ira 2010-05-07 18:57:36.0 +0200 +++ t1.c.gk.190r.ira2010-05-07 18:57:36.0 +0200 These are differences in chosen reload registers: -Reloads for insn # 583 +Reloads for insn # 697 Reload 0: reload_out (DI) = (reg:DI 789) GENERAL_REGS, RELOAD_FOR_OUTPUT (opnum = 0) reload_out_reg: (reg:DI 789) - reload_reg_rtx: (reg:DI 28 $28) + reload_reg_rtx: (reg:DI 0 $0) Reload 1: reload_in (DI) = (reg/v/f:DI 81 [ endp ]) GENERAL_REGS, RELOAD_FOR_INPUT (opnum = 2) reload_in_reg: (reg/v/f:DI 81 [ endp ]) - reload_reg_rtx: (reg:DI 28 $28) + reload_reg_rtx: (reg:DI 0 $0) [...] -Reloads for insn # 475 +Reloads for insn # 556 Reload 0: reload_in (SI) = (const_int -1894007588 [0x8f1bbcdc]) GENERAL_REGS, RELOAD_FOR_INPUT (opnum = 2), can't combine reload_in_reg: (reg:SI 795) - reload_reg_rtx: (reg:SI 28 $28) + reload_reg_rtx: (reg:SI 24 $24) [...] -Reloads for insn # 514 +Reloads for insn # 598 Reload 0: reload_in (SI) = (reg:SI 725) GENERAL_REGS, RELOAD_FOR_INPUT (opnum = 1) reload_in_reg: (reg:SI 725) - reload_reg_rtx: (reg:SI 8 $8) + reload_reg_rtx: (reg:SI 27 $27) [...] -Reloads for insn # 584 +Reloads for insn # 698 Reload 0: reload_in (DI) = (reg:DI 789) GENERAL_REGS, RELOAD_FOR_INPUT (opnum = 2) reload_in_reg: (reg:DI 789) - reload_reg_rtx: (reg:DI 12 $12) + reload_reg_rtx: (reg:DI 1 $1) -Reloads for insn # 586 +Reloads for insn # 700 Reload 0: reload_in (DI) = (reg/v/f:DI 287 [ ctx ]) GENERAL_REGS, RELOAD_FOR_OPERAND_ADDRESS (opnum = 0) reload_in_reg: (reg/v/f:DI 287 [ ctx ]) - reload_reg_rtx: (reg:DI 13 $13) + reload_reg_rtx: (reg:DI 2 $2) Reload 1: reload_out (SI) = (mem/s:SI (reg/v/f:DI 287 [ ctx ]) [4 ctx_13(D)->A+0 S4 A32]) NO_REGS, RELOAD_FOR_OUTPUT (opnum = 0), optional reload_out_reg: (mem/s:SI (reg/v/f:DI 287 [ ctx ]) [4 ctx_13(D)->A+0 S4 A32]) -- ubizjak at gmail dot com changed: What|Removed |Added CC||ubizjak at gmail dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44023
[Bug debug/44023] -fcompare-debug failure (length) for alphaev67 target
--- Comment #4 from ubizjak at gmail dot com 2010-05-07 16:32 --- Created an attachment (id=20598) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20598&action=view) reduced testcase Reduced testcase, 45 lines. Beware, crypto code ahead... -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44023
[Bug debug/44023] -fcompare-debug failure (length) for alphaev67 target
--- Comment #3 from ubizjak at gmail dot com 2010-05-07 15:46 --- Jakub, reverting your r159063 fixes the failure: PR debug/43478 * df-problems.c (struct dead_debug_use, struct dead_debug): New. (dead_debug_init, dead_debug_finish): New functions. (dead_debug_add, dead_debug_insert_before): Likewise. (df_note_bb_compute): Initialize a dead_debug object, add dead debug uses to it, insert debug bind insns before death insns, reset debug insns that refer to pending uses at the end. * rtl.h (make_debug_expr_from_rtl): New prototype. * varasm.c (make_debug_expr_from_rtl): New function. [1] http://gcc.gnu.org/ml/gcc-cvs/2010-05/msg00112.html -- ubizjak at gmail dot com changed: What|Removed |Added CC||jakub at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44023
[Bug debug/44023] -fcompare-debug failure (length) for alphaev67 target
--- Comment #2 from jakub at gcc dot gnu dot org 2010-05-07 15:40 --- >From quick skim the first difference is on a sha1.c:350 insn in *.ira dump. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44023
[Bug debug/44023] -fcompare-debug failure (length) for alphaev67 target
--- Comment #1 from ubizjak at gmail dot com 2010-05-07 12:39 --- Created an attachment (id=20595) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20595&action=view) preprocessed source Preprocessed source (can be compiled on a crosscompiler), triggers stage2/3 bootstrap compare failure. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44023