On Mon, May 2, 2016 at 1:21 PM, Uros Bizjak <ubiz...@gmail.com> wrote:
>>>> On 04/17/2016 08:59 PM, Jeff Law wrote: >>>> >>>>> invoke.texi has an independent list (probably incomplete! ;( of all the >>>>> things that -O2 enables. Make sure to add -frename-registers to that >>>>> list and this is Ok for the trunk (gcc-7). >>>> >>>> >>>> This is what I committed. >>> >>> >>> The patch introduced bootstrap failure on alpha-linux-gnu. >>> >>> Non-bootstrapped build regresses: >>> >>> FAIL: gcc.dg/torture/pr69542.c -O2 (test for excess errors) >>> FAIL: gcc.dg/torture/pr69542.c -O2 -flto -fno-use-linker-plugin >>> -flto-partition=none (test for excess errors) >>> FAIL: gcc.dg/torture/pr69542.c -Os (test for excess errors) >>> >>> where all failures are -fcompare-debug failures. >> >> >> Is the bootstrap failure also of this nature, or do you suspect something >> else? > > I'm analysing the dumps, but I strongly suspect that it is the same problem. > > (Please also note that the compiler includes Eric's PR 70886 patch [1]). > > [1] https://gcc.gnu.org/ml/gcc-patches/2016-05/msg00026.html With the referred testcase, the compare-debug failure trips on (debug_insn 101) ;; basic block 8, loop depth 0, count 0, freq 9788, maybe hot ;; prev block 7, next block 9, flags: (REACHABLE, RTL, MODIFIED) ;; pred: 7 [100.0%] (FALLTHRU) ;; bb 8 artificial_defs: { } ;; bb 8 artificial_uses: { u-1(30){ }} ;; lr in 1 [$1] 2 [$2] 3 [$3] 4 [$4] 5 [$5] 6 [$6] 29 [$29] 30 [$30] ;; lr use 1 [$1] 2 [$2] 4 [$4] 30 [$30] ;; lr def 1 [$1] 2 [$2] 4 [$4] ;; live in 1 [$1] 2 [$2] 3 [$3] 4 [$4] 5 [$5] 6 [$6] 29 [$29] 30 [$30] ;; live gen 1 [$1] 2 [$2] 4 [$4] ;; live kill (note 100 99 101 8 [bb 8] NOTE_INSN_BASIC_BLOCK) (debug_insn 101 100 104 8 (var_location:DI y (mem/f:DI (plus:DI (plus:DI (ashift:DI (reg:DI 2 $2 [orig:110 _19 ] [110]) (const_int 3 [0x3])) (reg/v/f:DI 1 $1 [orig:109 n ] [109])) (const_int 8 [0x8])) [3 n_18->h S8 A64])) pr69542.c:31 -1 (nil)) (insn 104 101 105 8 (set (reg:DI 17 $17 [154]) (ashift:DI (reg:DI 2 $2 [orig:110 _19 ] [110]) (const_int 3 [0x3]))) pr69542.c:31 64 {ashldi3} (nil)) The difference starts in rnreg pass, where without debug: processing block 8: opening incoming chain Creating chain $1 (53) opening incoming chain Creating chain $2 (54) opening incoming chain Creating chain $3 (55) opening incoming chain Creating chain $4 (56) opening incoming chain Creating chain $5 (57) opening incoming chain Creating chain $6 (58) opening incoming chain Creating chain $29 (59) opening incoming chain Creating chain $30 (60) Closing chain $2 (54) at insn 92 (terminate_write, superset) Creating chain $2 (61) at insn 92 Closing chain $1 (53) at insn 93 (terminate_dead, superset) ... and with debug: processing block 8: opening incoming chain Creating chain $1 (53) opening incoming chain Creating chain $2 (54) opening incoming chain Creating chain $3 (55) opening incoming chain Creating chain $4 (56) opening incoming chain Creating chain $5 (57) opening incoming chain Creating chain $6 (58) opening incoming chain Creating chain $29 (59) opening incoming chain Creating chain $30 (60) ==> Cannot rename chain $1 (53) at insn 101 (mark_read) ==> Widening register in chain $1 (53) at insn 101 Closing chain $2 (54) at insn 104 (terminate_write, superset) Creating chain $2 (61) at insn 104 Closing chain $1 (53) at insn 105 (terminate_dead, superset) ... > Uros.