[Bug rtl-optimization/37286] [4.4 regression] gfortran, trunk: ICE subst_stack_regs_pat, at reg-stack.c:1537
--- Comment #7 from martin at mpa-garching dot mpg dot de 2008-10-20 12:48 --- I still see the crash: /scratch/blah4/planck/LevelSgfortran -v -c -O2 testcase.f90 Using built-in specs. Target: i686-pc-linux-gnu Configured with: /scratch/martin/gcc/configure --prefix=/afs/mpa/data/martin/ugcc --with-mpfr-include=/usr/include --with-mpfr-lib=/usr/lib --with-gmp-include=/usr/include --with-gmp-lib=/usr/lib --enable-languages=c++,fortran --enable-checking=release Thread model: posix gcc version 4.4.0 20081020 (experimental) [trunk revision 141239] (GCC) COLLECT_GCC_OPTIONS='-v' '-c' '-O2' '-mtune=generic' /afs/mpa/data/martin/ugcc/libexec/gcc/i686-pc-linux-gnu/4.4.0/f951 testcase.f90 -quiet -dumpbase testcase.f90 -mtune=generic -auxbase testcase -O2 -version -fintrinsic-modules-path /afs/mpa/data/martin/ugcc/lib/gcc/i686-pc-linux-gnu/4.4.0/finclude -o /tmp/cc4O8vOv.s GNU Fortran (GCC) version 4.4.0 20081020 (experimental) [trunk revision 141239] (i686-pc-linux-gnu) compiled by GNU C version 4.4.0 20081020 (experimental) [trunk revision 141239], GMP version 4.2.1, MPFR version 2.3.1. warning: GMP header version 4.2.1 differs from library version 4.2.2. GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 testcase.f90: In function 'gn_monte_rand': testcase.f90:50: internal compiler error: in subst_stack_regs_pat, at reg-stack.c:1537 Please submit a full bug report, with preprocessed source if appropriate. See http://gcc.gnu.org/bugs.html for instructions. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37286
[Bug rtl-optimization/37286] [4.4 regression] gfortran, trunk: ICE subst_stack_regs_pat, at reg-stack.c:1537
--- Comment #8 from ubizjak at gmail dot com 2008-10-20 19:37 --- Adding either -fno-reorder-blocks or -fno-ira works OK for orignal fortran testcase. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37286
[Bug rtl-optimization/37286] [4.4 regression] gfortran, trunk: ICE subst_stack_regs_pat, at reg-stack.c:1537
--- Comment #6 from pinskia at gcc dot gnu dot org 2008-10-15 18:23 --- I can no longer reproduce this bug. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37286
[Bug rtl-optimization/37286] [4.4 regression] gfortran, trunk: ICE subst_stack_regs_pat, at reg-stack.c:1537
-- jsm28 at gcc dot gnu dot org changed: What|Removed |Added Priority|P3 |P1 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37286
[Bug rtl-optimization/37286] [4.4 regression] gfortran, trunk: ICE subst_stack_regs_pat, at reg-stack.c:1537
--- Comment #2 from ubizjak at gmail dot com 2008-08-30 14:05 --- Confirmed, uninitialized register [st(2)] happens in bb-reorder pass: before bb-reorder we have: ;; Start of basic block ( 10 3 9 6) - 11 ;; lr in7 [sp] 8 [st] 9 [st(1)] 10 [st(2)] 20 [frame] ;; lr use 7 [sp] 8 [st] 9 [st(1)] 10 [st(2)] ;; lr def 3 [bx] 4 [si] 6 [bp] 7 [sp] 8 [st] 9 [st(1)] 17 [flags] ;; live in 7 [sp] 8 [st] 9 [st(1)] 10 [st(2)] 20 [frame] ... (insn:HI 70 69 71 11 pr37286.f90:46 (set (reg:DF 9 st(1) [80]) (mult:DF (float_extend:DF (reg/v:SF 10 st(2) [orig:60 monte_temp ] [60])) (reg:DF 9 st(1) [79]))) 756 {*fop_df_4_i387} (expr_list:REG_DEAD (reg/v:SF 10 st(2) [orig:60 monte_temp ] [60]) (nil))) after bb-reorder pass we have in (bb 9): ;; Start of basic block ( 2) - 9 ;; bb 9 artificial_defs: { } ;; bb 9 artificial_uses: { u-1(6){ }u-1(7){ }} ;; lr in3 [bx] 4 [si] 6 [bp] 7 [sp] 20 [frame] ;; lr use 3 [bx] 4 [si] 6 [bp] 7 [sp] ;; lr def 0 [ax] 1 [dx] 2 [cx] 8 [st] 9 [st(1)] 10 [st(2)] 11 [st(3)] 12 [st(4)] 13 [st(5)] 14 [st(6)] 15 [st(7)] 17 [flags] 18 [fpsr] 19 [fpcr] 21 [] 22 [] 23 [] 24 [] 25 [] 26 [] 27 [] 28 [] 29 [] 30 [] 31 [] 32 [] 33 [] 34 [] 35 [] 36 [] 37 [] 38 [] 39 [] 40 [] 41 [] 42 [] 43 [] 44 [] 45 [] 46 [] 47 [] 48 [] 49 [] 50 [] 51 [] 52 [] ;; live in 3 [bx] 4 [si] 6 [bp] 7 [sp] 20 [frame] ;; live gen 8 [st] 9 [st(1)] ;; live kill ... (insn 146 145 147 9 pr37286.f90:46 (set (reg:DF 9 st(1) [80]) (mult:DF (float_extend:DF (reg/v:SF 10 st(2) [orig:60 monte_temp ] [60])) (reg:DF 9 st(1) [79]))) 756 {*fop_df_4_i387} (expr_list:REG_DEAD (reg/v:SF 10 st(2) [orig:60 monte_temp ] [60]) (nil))) reg-stack then chokes due to: Basic block 2 Input stack: empty insn 7 input stack: empty insn 8 input stack: [ 8 ] insn 126 input stack: [ 8 9 ] scanning new insn with uid = 172. Expected live registers [ 8 9 ] Output stack: [ 9 8 ] Basic block 9 Input stack: empty insn 17 input stack: empty insn 18 input stack: empty insn 19 input stack: [ 9 ] insn 145 input stack: [ 9 8 ] insn 146 input stack: [ 9 8 ] scanning new insn with uid = 173. Please note that input stack of bb 9 and output stack of bb2 doesn't match. -- ubizjak at gmail dot com changed: What|Removed |Added Status|UNCONFIRMED |NEW Component|target |rtl-optimization Ever Confirmed|0 |1 Keywords|ra | Last reconfirmed|-00-00 00:00:00 |2008-08-30 14:05:31 date|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37286
[Bug rtl-optimization/37286] [4.4 regression] gfortran, trunk: ICE subst_stack_regs_pat, at reg-stack.c:1537
--- Comment #3 from ubizjak at gmail dot com 2008-08-30 14:16 --- Adding -fno-reorder-blocks works OK. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37286
[Bug rtl-optimization/37286] [4.4 regression] gfortran, trunk: ICE subst_stack_regs_pat, at reg-stack.c:1537
--- Comment #4 from pinskia at gcc dot gnu dot org 2008-08-30 23:02 --- Here is a C++ testcase (you can convert it to C if you want by changing the references to pointers and such): int gni97 = 97, gnj97 = 33; double gnu[97]; extern void g(void); double f(double min, float max) { double prephitmp35; double prephitmp24; float monte_temp; int D1505; prephitmp35 = min; prephitmp24 = max; if (prephitmp35 prephitmp24) { g(); prephitmp35 = min; prephitmp24 = max; } else { D1505 = gni97 - 1; monte_temp = gnu[D1505] - gnu[gnj97-1]; if (monte_temp 0) { monte_temp = monte_temp + 1.0; } gnu[D1505] = monte_temp; } return monte_temp * (prephitmp24 + prephitmp35) + prephitmp35; } -- pinskia at gcc dot gnu dot org changed: What|Removed |Added GCC build triplet|i686-pc-linux-gnu | GCC host triplet|i686-pc-linux-gnu | GCC target triplet|i686-pc-linux-gnu |i?86-*-* x86_64-*-* (-m32) http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37286
[Bug rtl-optimization/37286] [4.4 regression] gfortran, trunk: ICE subst_stack_regs_pat, at reg-stack.c:1537
--- Comment #5 from pinskia at gcc dot gnu dot org 2008-08-30 23:12 --- This used to work before IRA (4.4.0 20080824). -- pinskia at gcc dot gnu dot org changed: What|Removed |Added CC||vmakarov at gcc dot gnu dot ||org Keywords||ra http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37286