[Bug debug/44023] -fcompare-debug failure (length) for alphaev67 target

2010-05-07 Thread jakub at gcc dot gnu dot org


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

2010-05-07 Thread ubizjak at gmail dot com


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

2010-05-07 Thread ubizjak at gmail dot com


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

2010-05-07 Thread ubizjak at gmail dot com


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

2010-05-07 Thread ubizjak at gmail dot com


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

2010-05-07 Thread jakub at gcc dot gnu dot org


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

2010-05-07 Thread ubizjak at gmail dot com


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