[Bug rtl-optimization/37286] [4.4 regression] gfortran, trunk: ICE subst_stack_regs_pat, at reg-stack.c:1537

2008-10-20 Thread martin at mpa-garching dot mpg dot de


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

2008-10-20 Thread ubizjak at gmail dot com


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

2008-10-15 Thread pinskia at gcc dot gnu dot org


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

2008-09-09 Thread jsm28 at gcc dot gnu dot org


-- 

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

2008-08-30 Thread ubizjak at gmail dot com


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

2008-08-30 Thread ubizjak at gmail dot com


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

2008-08-30 Thread pinskia at gcc dot gnu dot org


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

2008-08-30 Thread pinskia at gcc dot gnu dot org


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