[Bug target/67002] [5] [SH]: Bootstrap stage 2/3 comparison failure - gcc/real.o differs

2015-12-25 Thread olegendo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67002

Oleg Endo  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |FIXED

--- Comment #30 from Oleg Endo  ---
Thanks for confirming.

[Bug target/67002] [5] [SH]: Bootstrap stage 2/3 comparison failure - gcc/real.o differs

2015-12-23 Thread glaubitz at physik dot fu-berlin.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67002

--- Comment #29 from John Paul Adrian Glaubitz  ---
(In reply to John Paul Adrian Glaubitz from comment #28)
> Will report back.

From a current build log (5.3.1-4) [1]:

Comparing stages 2 and 3
warning: gcc/cc1objplus-checksum.o differs
warning: gcc/cc1-checksum.o differs
warning: gcc/cc1obj-checksum.o differs
warning: gcc/cc1plus-checksum.o differs
Comparison successful.

So, I think we can mark this as resolved unless I am overlooking something. You
can check the log yourself in any case.

Adrian

> [1] https://people.debian.org/~glaubitz/gcc-5_5.3.1-4_sh4.build

[Bug target/67002] [5] [SH]: Bootstrap stage 2/3 comparison failure - gcc/real.o differs

2015-08-14 Thread glaubitz at physik dot fu-berlin.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67002

--- Comment #27 from John Paul Adrian Glaubitz glaubitz at physik dot 
fu-berlin.de ---
(In reply to Oleg Endo from comment #26)
 Please open a new PR if there is another boostrapping issue.

I'm afraid that might actually be the case even though I'm not sure whether
it's a bug in gcc or elsewhere.

What happens is that g++ seems to get stuck in stage3 when compiling
src/gcc/c-family/c-common.c. After a while, the build daemon will just kill g++
because of inactivity. Interestingly, c-common.o seems to compile fine though.

Should I open a new PR?

Adrian


[Bug target/67002] [5] [SH]: Bootstrap stage 2/3 comparison failure - gcc/real.o differs

2015-08-14 Thread glaubitz at physik dot fu-berlin.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67002

--- Comment #28 from John Paul Adrian Glaubitz glaubitz at physik dot 
fu-berlin.de ---
(In reply to John Paul Adrian Glaubitz from comment #27)
 What happens is that g++ seems to get stuck in stage3 when compiling
 src/gcc/c-family/c-common.c. After a while, the build daemon will just kill
 g++ because of inactivity. Interestingly, c-common.o seems to compile fine
 though.

Ok, it actually went further now. It was just stuck for over an hour. Looking
at strace showed that g++ was allocating memory (brk syscalls).

Will report back.


[Bug target/67002] [5] [SH]: Bootstrap stage 2/3 comparison failure - gcc/real.o differs

2015-08-13 Thread glaubitz at physik dot fu-berlin.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67002

--- Comment #25 from John Paul Adrian Glaubitz glaubitz at physik dot 
fu-berlin.de ---
Ok, this seems to have been fixed:

Comparing stages 2 and 3
warning: gcc/cc1objplus-checksum.o differs
warning: gcc/cc1-checksum.o differs
warning: gcc/cc1plus-checksum.o differs
warning: gcc/cc1obj-checksum.o differs
Comparison successful.

gcc-5 is still building though and we might run into another issue, but cross
your fingers :).


[Bug target/67002] [5] [SH]: Bootstrap stage 2/3 comparison failure - gcc/real.o differs

2015-08-13 Thread olegendo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67002

--- Comment #26 from Oleg Endo olegendo at gcc dot gnu.org ---
(In reply to John Paul Adrian Glaubitz from comment #25)
 Ok, this seems to have been fixed:


Although this PR could be marked as fixed, I'd like to keep it open.  It will
remind me of the static rtx_insn mentioned above.

Please open a new PR if there is another boostrapping issue.


[Bug target/67002] [5] [SH]: Bootstrap stage 2/3 comparison failure - gcc/real.o differs

2015-08-07 Thread kkojima at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67002

--- Comment #23 from Kazumoto Kojima kkojima at gcc dot gnu.org ---
Author: kkojima
Date: Fri Aug  7 20:41:25 2015
New Revision: 226726

URL: https://gcc.gnu.org/viewcvs?rev=226726root=gccview=rev
Log:
PR target/67002
* config/sh/sh.c (sh_recog_treg_set_expr): Return false during
expand phase to avoid codegen differences with -g.


Modified:
branches/gcc-5-branch/gcc/ChangeLog
branches/gcc-5-branch/gcc/config/sh/sh.c


[Bug target/67002] [5] [SH]: Bootstrap stage 2/3 comparison failure - gcc/real.o differs

2015-08-07 Thread kkojima at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67002

--- Comment #24 from Kazumoto Kojima kkojima at gcc dot gnu.org ---
Author: kkojima
Date: Fri Aug  7 08:11:45 2015
New Revision: 226715

URL: https://gcc.gnu.org/viewcvs?rev=226715root=gccview=rev
Log:
PR target/67002
* config/sh/sh.c (sh_recog_treg_set_expr): Return false during
expand phase to avoid codegen differences with -g.


Modified:
branches/trunk/gcc/ChangeLog
branches/trunk/gcc/config/sh/sh.c


[Bug target/67002] [5] [SH]: Bootstrap stage 2/3 comparison failure - gcc/real.o differs

2015-08-06 Thread olegendo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67002

--- Comment #22 from Oleg Endo olegendo at gcc dot gnu.org ---
(In reply to Kazumoto Kojima from comment #21)
 
 Yes, it works.  I'm uncomfortable with it because the current use of
 crtl-emit.x_cur_insn_uid aka cur_insn_uid is limitted to emit-rtl.c.
 I think that the use of that field outside of emit-rtl.c is unexpected.
 Also it doesn't sound good to add a new interface to access that field
 there.  After all, your static rtx_insn is the right thing to do.

OK.  I will try to implement that static rtx_insn thing, after I have
finished the patch attachment 36012, which makes some changes to treg_set_expr.


[Bug target/67002] [5] [SH]: Bootstrap stage 2/3 comparison failure - gcc/real.o differs

2015-08-06 Thread kkojima at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67002

--- Comment #21 from Kazumoto Kojima kkojima at gcc dot gnu.org ---
(In reply to Oleg Endo from comment #20)
 Yes, that looks OK.  treg_set_expr-something recog matching is actually only
 required during combine.  The simpler forms like (reg:SI T_REG) could also
 be required during expansion.

Thanks.  I'll commit it when the usual test is done.

 Hm ... actually it should work.  The temporary rtx insn is not used for
 anything else, so that assigned insn uid will never appear anywhere. 
 However, it's probably better to have one static rtx_insn to avoid
 constructing the temporary rtx over and over again.  Unfortunately the
 gen_rtx* functions allocate rtx objects always on the GC heap.

Yes, it works.  I'm uncomfortable with it because the current use of
crtl-emit.x_cur_insn_uid aka cur_insn_uid is limitted to emit-rtl.c.
I think that the use of that field outside of emit-rtl.c is unexpected.
Also it doesn't sound good to add a new interface to access that field
there.  After all, your static rtx_insn is the right thing to do.


[Bug target/67002] [5] [SH]: Bootstrap stage 2/3 comparison failure - gcc/real.o differs

2015-08-06 Thread olegendo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67002

--- Comment #20 from Oleg Endo olegendo at gcc dot gnu.org ---
(In reply to Kazumoto Kojima from comment #19)
 (In reply to Kazumoto Kojima from comment #18)
 In the problematic situation, get_max_insn_count returns the false
 value after
 
   if (MAY_HAVE_DEBUG_INSNS)
 expand_debug_locations ();
 
 in pass_expand::execute (function *fun).  expand_debug_locations
 calls sh_recog_treg_set_expr indirectly at this very early stage
 to compute rtx costs.  sh_recog_treg_set_expr makes some set insns
 and they cause the differences of cur_insn_uid with -g.

Thank you very much for tracking this down.

 Oleg, how about the patch below?

Yes, that looks OK.  treg_set_expr-something recog matching is actually only
required during combine.  The simpler forms like (reg:SI T_REG) could also be
required during expansion.

 My first trial was --cur_insn_uid just
 after make_insn_raw there but I'm afraid that it will make another
 surprise.

Hm ... actually it should work.  The temporary rtx insn is not used for
anything else, so that assigned insn uid will never appear anywhere.  However,
it's probably better to have one static rtx_insn to avoid constructing the
temporary rtx over and over again.  Unfortunately the gen_rtx* functions
allocate rtx objects always on the GC heap.


[Bug target/67002] [5] [SH]: Bootstrap stage 2/3 comparison failure - gcc/real.o differs

2015-08-06 Thread kkojima at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67002

--- Comment #19 from Kazumoto Kojima kkojima at gcc dot gnu.org ---
(In reply to Kazumoto Kojima from comment #18)
In the problematic situation, get_max_insn_count returns the false
value after

  if (MAY_HAVE_DEBUG_INSNS)
expand_debug_locations ();

in pass_expand::execute (function *fun).  expand_debug_locations
calls sh_recog_treg_set_expr indirectly at this very early stage
to compute rtx costs.  sh_recog_treg_set_expr makes some set insns
and they cause the differences of cur_insn_uid with -g.  Oleg, how
about the patch below?  My first trial was --cur_insn_uid just
after make_insn_raw there but I'm afraid that it will make another
surprise.

diff --git a/config/sh/sh.c b/config/sh/sh.c
index f429193..450d634 100644
--- a/config/sh/sh.c
+++ b/config/sh/sh.c
@@ -14165,6 +14165,12 @@ sh_recog_treg_set_expr (rtx op, machine_mode mode)
   if (!can_create_pseudo_p ())
 return false;

+  /* expand_debug_locations may call this to compute rtx costs at
+ very early stage.  In that case, don't make new insns here to
+ avoid codegen differences with -g. */
+  if (currently_expanding_to_rtl)
+return false;
+
   /* We are going to invoke recog in a re-entrant way and thus
  have to capture its current state and restore it afterwards.  */
   recog_data_d prev_recog_data = recog_data;


[Bug target/67002] [5] [SH]: Bootstrap stage 2/3 comparison failure - gcc/real.o differs

2015-08-05 Thread gcc-bugzilla at mkarcher dot dialup.fu-berlin.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67002

Michael Karcher gcc-bugzilla at mkarcher dot dialup.fu-berlin.de changed:

   What|Removed |Added

 CC||gcc-bugzilla at mkarcher dot 
dialu
   ||p.fu-berlin.de

--- Comment #15 from Michael Karcher gcc-bugzilla at mkarcher dot 
dialup.fu-berlin.de ---
Created attachment 36134
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=36134action=edit
even further reduced test case

I manually reduced the example even more. Interestingly it doesn't contain any
C++ specific statements any more, yet it only fails -fcompare-debug with -x
c++, but passes with -x c


[Bug target/67002] [5] [SH]: Bootstrap stage 2/3 comparison failure - gcc/real.o differs

2015-08-05 Thread olegendo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67002

--- Comment #17 from Oleg Endo olegendo at gcc dot gnu.org ---
(In reply to Michael Karcher from comment #16)

PR 61904 has been marked as a dup of PR 61801, which has been marked as fixed. 
So this must be some other bug.

When compiling the same code as C and as C++ there might be differences because
it's two different language front ends.  Sometimes we get cases like PR 56365.


[Bug target/67002] [5] [SH]: Bootstrap stage 2/3 comparison failure - gcc/real.o differs

2015-08-05 Thread kkojima at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67002

--- Comment #18 from Kazumoto Kojima kkojima at gcc dot gnu.org ---
(In reply to Michael Karcher from comment #15)
The first different line of diff of the .pre dumps of Michael's
test case with/without -g is:

 Expression hash table (53 buckets, 12 entries)
---
 Expression hash table (51 buckets, 12 entries)

It means that gcse.c:alloc_hash_table allocates the table with
different number of buckets with -g.
It looks emit_rtl.c:get_max_insn_count returns different values
with/without -g at rtl_pre pass.  This shouldn't happen.
The comment of get_max_insn_count says:

  /* The table size must be stable across -g, to avoid codegen
 differences due to debug insns, and not be affected by
 -fmin-insn-uid, to avoid excessive table size and to simplify
 debugging of -fcompare-debug failures.  */


[Bug target/67002] [5] [SH]: Bootstrap stage 2/3 comparison failure - gcc/real.o differs

2015-08-05 Thread gcc-bugzilla at mkarcher dot dialup.fu-berlin.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67002

--- Comment #16 from Michael Karcher gcc-bugzilla at mkarcher dot 
dialup.fu-berlin.de ---
The bug seems to be quite similar to the infamous sloth that was dropped on
the head as a baby-bug Linus discovered (https://lkml.org/lkml/2014/7/24/584 ,
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61904). -fcompare-debug passes if
-fno-var-tracking-assignments is passed as compiler option.


[Bug target/67002] [5] [SH]: Bootstrap stage 2/3 comparison failure - gcc/real.o differs

2015-08-03 Thread kkojima at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67002

--- Comment #14 from Kazumoto Kojima kkojima at gcc dot gnu.org ---
Created attachment 36117
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=36117action=edit
reduced test case

 Michael Karcher, who previously helped smashing some bugs in gcc for the SH
 target, had a go at this and he discovered that the difference between stage2
 and stage3 is the -gtoggle switch.

I've confirmed it even with cross 5/6 compilers.  The above reduced
C++ test case fails with -S -O2 -fcompare-debug on my 5/6 cross
sh4-linux/sh-elf g++.  It means that the generated insns differ
with/without -g.  It looks to me a target independent issue, though
I could be wrong about it.  With a quick look, rtl_pre pass behaves
differently with -g.  I've found PRs for -fcompare-debug like 63315,
65874, 65980, 66688 and 67043.


[Bug target/67002] [5] [SH]: Bootstrap stage 2/3 comparison failure - gcc/real.o differs

2015-08-03 Thread glaubitz at physik dot fu-berlin.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67002

--- Comment #12 from John Paul Adrian Glaubitz glaubitz at physik dot 
fu-berlin.de ---
Update:

Michael Karcher, who previously helped smashing some bugs in gcc for the SH
target, had a go at this and he discovered that the difference between stage2
and stage3 is the -gtoggle switch. And, indeed, triggering this switch is
responsible for the diff:

root@tirpitz:/home/mkarcher diff -u s2/real-stage2.o s3/real-stage3.o 
root@tirpitz:/home/mkarcher diff -u s2/real-stage2.o s3-notoggle/real-stage3.o 
Binary files s2/real-stage2.o and s3-notoggle/real-stage3.o differ
root@tirpitz:/home/mkarcher 

He generated a lot of debug output during build with -fdump-tree-all and
-da:

gccroot=/home/glaubitz/gcc-5-test_5.2.1-12/gcc-5-5.2.1
gccbuild=$gccroot/build
$gccbuild/stage1-gcc/xg++ \
  -B$gccbuild/stage1-gcc/ \
  -B/usr/sh4-linux-gnu/bin/ -nostdinc++ \
  -B$gccbuild/stage1-sh4-linux-gnu/libstdc++-v3/src/.libs \
  -B$gccbuild/stage1-sh4-linux-gnu/libstdc++-v3/libsupc++/.libs  \
  -I$gccbuild/stage1-sh4-linux-gnu/libstdc++-v3/include/sh4-linux-gnu \
  -I$gccbuild/stage1-sh4-linux-gnu/libstdc++-v3/include \
  -I$gccroot/src/libstdc++-v3/libsupc++ \
  -c -g -O2 -gtoggle -DIN_GCC \
  -fno-exceptions -fno-rtti -fasynchronous-unwind-tables \
  -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual
-Wmissing-format-attribute -Woverloaded-virtual \
 -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings \
  -DHAVE_CONFIG_H \
  -I$gccbuild/stage2-gcc -I$gccroot/src/gcc -I$gccroot/src/include
-I$gccroot/src/libcpp/include  \
  -I$gccroot/src/libdecnumber -I$gccroot/src/libdecnumber/dpd
-I$gccbuild/libdecnumber \
  -I$gccroot/src/libbacktrace \
  -da -fdump-tree-all \
  -o real-stage2.o $gccroot/src/gcc/real.c

I'm collecting all the dumped output now and will upload. I will follow up with
a download link quickly.

Adrian


[Bug target/67002] [5] [SH]: Bootstrap stage 2/3 comparison failure - gcc/real.o differs

2015-08-03 Thread glaubitz at physik dot fu-berlin.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67002

--- Comment #13 from John Paul Adrian Glaubitz glaubitz at physik dot 
fu-berlin.de ---
(In reply to John Paul Adrian Glaubitz from comment #12)
 I'm collecting all the dumped output now and will upload. I will follow up
 with a download link quickly.

Here we go: http://users.physik.fu-berlin.de/~glaubitz/gcc-pr67002.tgz (approx.
171 MiB)


[Bug target/67002] [5] [SH]: Bootstrap stage 2/3 comparison failure - gcc/real.o differs

2015-07-30 Thread olegendo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67002

--- Comment #11 from Oleg Endo olegendo at gcc dot gnu.org ---
(In reply to John Paul Adrian Glaubitz from comment #10)
 
 Looking at the build log, it's only gcc/real.o where the comparison fails,
 all the others (except for the checksum files) are find. I think chances are
 that, if this is actually a real bug, it might show itself more pronounced
 when we use gcc-5 to build other packages.
 
 Just look at how many bugs we were able to find in gcc-4.9 while using it as
 the standard host compiler on Debian sh4.

Yeah, for this purpose it can be ignored of course.  However, I guess for that
you might also just disable bootstrapping (configure with --disable-bootstrap).


[Bug target/67002] [5] [SH]: Bootstrap stage 2/3 comparison failure - gcc/real.o differs

2015-07-30 Thread glaubitz at physik dot fu-berlin.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67002

--- Comment #10 from John Paul Adrian Glaubitz glaubitz at physik dot 
fu-berlin.de ---
(In reply to Oleg Endo from comment #9)
 Not sure if this is a good idea.

I actually think it is the best option as chances are dim otherwise that we
find what's actually causing this register indeterminacy.

Looking at the build log, it's only gcc/real.o where the comparison fails, all
the others (except for the checksum files) are find. I think chances are that,
if this is actually a real bug, it might show itself more pronounced when we
use gcc-5 to build other packages.

Just look at how many bugs we were able to find in gcc-4.9 while using it as
the standard host compiler on Debian sh4.

You are right that ignoring this failure is most certainly not the best on a
release architecture that people rely on. But currently, Debian on sh4 is
merely just a port and things are expected to break from time to time.

I am currently building now a patched gcc-5_5.2.1-12 which has gcc/real.o added
to compare_exclusions, let's see how far we get.

Adrian


[Bug target/67002] [5] [SH]: Bootstrap stage 2/3 comparison failure - gcc/real.o differs

2015-07-29 Thread glaubitz at physik dot fu-berlin.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67002

--- Comment #5 from John Paul Adrian Glaubitz glaubitz at physik dot 
fu-berlin.de ---
Some observations:

glaubitz@z6:~/gcc-5-files sh4-linux-gnu-strip real_stage2.o 
glaubitz@z6:~/gcc-5-files ls -l
total 800
-rw-r--r-- 1 glaubitz glaubitz 376020 Jul 26 20:09 real_stage1.o
-rw-r--r-- 1 glaubitz glaubitz  33792 Jul 29 09:15 real_stage2.o
-rw-r--r-- 1 glaubitz glaubitz 401656 Jul 29 05:40 real_stage3.o
glaubitz@z6:~/gcc-5-files sh4-linux-gnu-strip real_stage3.o 
glaubitz@z6:~/gcc-5-files ls -l
total 440
-rw-r--r-- 1 glaubitz glaubitz 376020 Jul 26 20:09 real_stage1.o
-rw-r--r-- 1 glaubitz glaubitz  33792 Jul 29 09:15 real_stage2.o
-rw-r--r-- 1 glaubitz glaubitz  33792 Jul 29 09:15 real_stage3.o
glaubitz@z6:~/gcc-5-files sh4-linux-gnu-strip real_stage1.o 
glaubitz@z6:~/gcc-5-files ls -l
total 152
-rw-r--r-- 1 glaubitz glaubitz 80768 Jul 29 09:16 real_stage1.o
-rw-r--r-- 1 glaubitz glaubitz 33792 Jul 29 09:15 real_stage2.o
-rw-r--r-- 1 glaubitz glaubitz 33792 Jul 29 09:15 real_stage3.o
glaubitz@z6:~/gcc-5-files diff real_stage2.o real_stage3.o 
Binary files real_stage2.o and real_stage3.o differ
glaubitz@z6:~/gcc-5-files

This was done on my main desktop, using a cross-toolchain.


[Bug target/67002] [5] [SH]: Bootstrap stage 2/3 comparison failure - gcc/real.o differs

2015-07-29 Thread glaubitz at physik dot fu-berlin.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67002

--- Comment #6 from John Paul Adrian Glaubitz glaubitz at physik dot 
fu-berlin.de ---
And here is the diff from the disassembly:

glaubitz@z6:~/gcc-5-files diff -u real*asm
--- real2.asm   2015-07-29 09:17:42.806123211 +0200
+++ real3.asm   2015-07-29 09:17:47.310013352 +0200
@@ -1,5 +1,5 @@

-real_stage2.o: file format elf32-sh-linux
+real_stage3.o: file format elf32-sh-linux


 Disassembly of section .text:
@@ -9328,7 +9328,7 @@
 4976:  03 a2   bra 0x4d80
 4978:  09 00   nop 
 497a:  5c d0   mov.l   0x4aec,r0   ! 4da8
-497c:  5c db   mov.l   0x4af0,r11  ! 56e4
+497c:  5c dc   mov.l   0x4af0,r12  ! 56e4
 497e:  0b 40   jsr @r0
 4980:  01 e4   mov #1,r4
 4982:  02 62   mov.l   @r0,r2
@@ -9347,18 +9347,18 @@
 499c:  f3 60   mov r15,r0
 499e:  40 70   add #64,r0
 49a0:  20 10   mov.l   r2,@(0,r0)
-49a2:  0b 4b   jsr @r11
+49a2:  0b 4c   jsr @r12
 49a4:  31 10   mov.l   r3,@(4,r0)
 49a6:  a8 2a   tst r10,r10
 49a8:  02 8d   bt.s0x49b0
 49aa:  83 6a   mov r8,r10
 49ac:  ae a0   bra 0x4b0c
 49ae:  2d e1   mov #45,r1
-49b0:  50 dc   mov.l   0x4af4,r12  ! d80
+49b0:  50 db   mov.l   0x4af4,r11  ! d80
 49b2:  f3 65   mov r15,r5
 49b4:  f3 64   mov r15,r4
 49b6:  30 75   add #48,r5
-49b8:  0b 4c   jsr @r12
+49b8:  0b 4b   jsr @r11
 49ba:  18 74   add #24,r4
 49bc:  09 e1   mov #9,r1
 49be:  16 30   cmp/hi  r1,r0
@@ -9376,12 +9376,12 @@
 49d6:  13 6e   mov r1,r14
 49d8:  01 e5   mov #1,r5
 49da:  f3 64   mov r15,r4
-49dc:  0b 4b   jsr @r11
+49dc:  0b 4c   jsr @r12
 49de:  18 74   add #24,r4
 49e0:  f3 65   mov r15,r5
 49e2:  f3 64   mov r15,r4
 49e4:  30 75   add #48,r5
-49e6:  0b 4c   jsr @r12
+49e6:  0b 4b   jsr @r11
 49e8:  18 74   add #24,r4
 49ea:  30 70   add #48,r0
 49ec:  00 2e   mov.b   r0,@r14
glaubitz@z6:~/gcc-5-files


[Bug target/67002] [5] [SH]: Bootstrap stage 2/3 comparison failure - gcc/real.o differs

2015-07-29 Thread kkojima at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67002

--- Comment #7 from Kazumoto Kojima kkojima at gcc dot gnu.org ---
(In reply to John Paul Adrian Glaubitz from comment #6)
 And here is the diff from the disassembly:

A rare indeterminacy of the register choice.  Both codes are valid.
It seems very hard to find where has this indeterminacy come from.
Please follow Oleg's suggestion #c1.


[Bug target/67002] [5] [SH]: Bootstrap stage 2/3 comparison failure - gcc/real.o differs

2015-07-29 Thread glaubitz at physik dot fu-berlin.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67002

--- Comment #4 from John Paul Adrian Glaubitz glaubitz at physik dot 
fu-berlin.de ---
Here are the files, copied as follows:

root@tirpitz:/home/glaubitz cd gcc-5-test_5.2.1-12/
root@tirpitz:..glaubitz/gcc-5-test_5.2.1-12 find . -name real.o
./gcc-5-5.2.1/build/gcc/real.o
./gcc-5-5.2.1/build/stage1-gcc/real.o
./gcc-5-5.2.1/build/prev-gcc/real.o
root@tirpitz:..glaubitz/gcc-5-test_5.2.1-12 mkdir ~/gcc-5-files
root@tirpitz:..glaubitz/gcc-5-test_5.2.1-12 cp -av
./gcc-5-5.2.1/build/gcc/real.o ~/gcc-5-files/real_stage3.o
‘./gcc-5-5.2.1/build/gcc/real.o’ - ‘/root/gcc-5-files/real_stage3.o’
root@tirpitz:..glaubitz/gcc-5-test_5.2.1-12 cp -av
./gcc-5-5.2.1/build/stage1-gcc/real.o ~/gcc-5-files/real_stage1.o
‘./gcc-5-5.2.1/build/stage1-gcc/real.o’ - ‘/root/gcc-5-files/real_stage1.o’
root@tirpitz:..glaubitz/gcc-5-test_5.2.1-12 cp -av
./gcc-5-5.2.1/build/prev-gcc/real.o ~/gcc-5-files/real_stage2.o
‘./gcc-5-5.2.1/build/prev-gcc/real.o’ - ‘/root/gcc-5-files/real_stage2.o’
root@tirpitz:..glaubitz/gcc-5-test_5.2.1-12 cd
root@tirpitz:~ tar czf gcc-5-files.tgz gcc-5-files/
root@tirpitz:~

Attaching this tarball.

Adrian

[Bug target/67002] [5] [SH]: Bootstrap stage 2/3 comparison failure - gcc/real.o differs

2015-07-29 Thread glaubitz at physik dot fu-berlin.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67002

--- Comment #3 from John Paul Adrian Glaubitz glaubitz at physik dot 
fu-berlin.de ---
Created attachment 36085
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=36085action=edit
gcc/real.o from different compiler stages


[Bug target/67002] [5] [SH]: Bootstrap stage 2/3 comparison failure - gcc/real.o differs

2015-07-29 Thread olegendo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67002

--- Comment #9 from Oleg Endo olegendo at gcc dot gnu.org ---
(In reply to John Paul Adrian Glaubitz from comment #8)
 
 Maybe we can add gcc/real.o to the ignore list for the time being?

Not sure if this is a good idea.


[Bug target/67002] [5] [SH]: Bootstrap stage 2/3 comparison failure - gcc/real.o differs

2015-07-29 Thread glaubitz at physik dot fu-berlin.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67002

--- Comment #8 from John Paul Adrian Glaubitz glaubitz at physik dot 
fu-berlin.de ---
(In reply to Kazumoto Kojima from comment #7)
 A rare indeterminacy of the register choice.  Both codes are valid.

Ok, that's what I thought as well.

 It seems very hard to find where has this indeterminacy come from.
 Please follow Oleg's suggestion #c1.

Since the patch mentioned in #c1 has already been committed, I'll just have to
wait for Matthias to update the SVN revision of the gcc-5 branch in Debian.

Maybe we can add gcc/real.o to the ignore list for the time being?


[Bug target/67002] [5] [SH]: Bootstrap stage 2/3 comparison failure - gcc/real.o differs

2015-07-26 Thread glaubitz at physik dot fu-berlin.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67002

--- Comment #2 from John Paul Adrian Glaubitz glaubitz at physik dot 
fu-berlin.de ---
I'm testing gcc-5_5.2.1-12 (r226105) now as suggested by Matthias.
Unfortunately, my SH7785LCR board crashed earlier today, so I had to restart
the build.

Once the build is finished, I will attached the stage2/3 versions of gcc/real.o
to this bug report.

The snapshot I am currently building does not the suggested patch from (PR
66930), so that we are sure to still run into the stage2/3 comparison failure
for further analysis. After that, I will do another build attempt with the
patch applied.

Adrian


[Bug target/67002] [5] [SH]: Bootstrap stage 2/3 comparison failure - gcc/real.o differs

2015-07-25 Thread olegendo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67002

--- Comment #1 from Oleg Endo olegendo at gcc dot gnu.org ---
That came out of a GCC version with has a known wrong-code bug (PR 66930)
Please try again with the patch
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66930#c10