[Bug rtl-optimization/66207] Switch alpha to LRA

ubizjak at gmail dot com gcc-bugzilla@gcc.gnu.org
Tue May 19 16:11:00 GMT 2015


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66207

--- Comment #2 from Uroš Bizjak <ubizjak at gmail dot com> ---
The patched gcc (the patch from Comment #1) bootstrap went all the way to stage
2, where it crashed on attached source when building libcpp with:

/space/homedirs/uros/gcc-svn/trunk/libcpp/macro.c: In function ‘const
cpp_token* cpp_get_token_1(cpp_reader*, source_location*)’:
/space/homedirs/uros/gcc-svn/trunk/libcpp/macro.c:2568:1: internal compiler
error: Max. number of generated reload insns per insn is achieved (90)

 }
 ^
0x120cfd257 lra_constraints(bool)
        /space/homedirs/uros/gcc-svn/trunk/gcc/lra-constraints.c:4379
0x120cdd6fb lra(_IO_FILE*)
        /space/homedirs/uros/gcc-svn/trunk/gcc/lra.c:2320
0x120c62b77 do_reload
        /space/homedirs/uros/gcc-svn/trunk/gcc/ira.c:5418
0x120c632af execute
        /space/homedirs/uros/gcc-svn/trunk/gcc/ira.c:5589
Please submit a full bug report,

The crash can be reproduced with a crosscompiler from x86_64-linux-gnu,
configured with "--target=alpha-linux-gnu --enable-languages=c,c++"

$ cc1plus -O2 -fpreprocessed -o macro.o macro.ii

/space/homedirs/uros/gcc-svn/trunk/libcpp/macro.c: In function ‘const
cpp_token* cpp_get_token_1(cpp_reader*, source_location*)’:
/space/homedirs/uros/gcc-svn/trunk/libcpp/macro.c:2568:1: internal compiler
error: Max. number of generated reload insns per insn is achieved (90)

0xa9b474 lra_constraints(bool)
        /home/uros/gcc-svn/trunk/gcc/lra-constraints.c:4379
0xa87e4c lra(_IO_FILE*)
        /home/uros/gcc-svn/trunk/gcc/lra.c:2320
0xa49929 do_reload
        /home/uros/gcc-svn/trunk/gcc/ira.c:5418
0xa49929 execute
        /home/uros/gcc-svn/trunk/gcc/ira.c:5589
Please submit a full bug report,

(gdb) up
#1  0x0000000000a9b475 in lra_constraints (first_p=true) at
/home/uros/gcc-svn/trunk/gcc/lra-constraints.c:4379
4379               MAX_RELOAD_INSNS_NUMBER);
(gdb) p curr_insn
$1 = (rtx_insn *) 0x7ffff13d5fc0
(gdb) p debug_rtx (curr_insn)
(insn 973 639 972 89 (set (reg:QI 539 [183])
        (reg:QI 183))
/space/homedirs/uros/gcc-svn/trunk/libcpp/macro.c:2566 229 {*movqi}
     (nil))

The end of reload dump shows this sequence:

     Choosing alt 0 in insn 643:  (0) =r  (1) r {zero_extendqidi2}
      Creating newreg=449 from oldreg=183, assigning class GENERAL_REGS to r449
  643: r427:SI#0=zero_extend(r449:QI)
      REG_DEAD r183:QI
    Inserting insn reload before:
  883: r449:QI=r183:QI

            0 Non pseudo reload: reject++
          alt=0,overall=607,losers=1,rld_nregs=1
            0 Non pseudo reload: reject++
            alt=1: Bad operand -- refuse
     Choosing alt 0 in insn 883:  (0) =r  (1) rJ {*movqi}
      Creating newreg=450 from oldreg=183, assigning class GENERAL_REGS to r450
  883: r449:QI=r450:QI
    Inserting insn reload before:
  884: r450:QI=r183:QI


More information about the Gcc-bugs mailing list