Bug 30835

Summary: ICE with -O2 -ftree-loop-linear
Product: gcc Reporter: Joost VandeVondele <Joost.VandeVondele>
Component: middle-endAssignee: Zdenek Dvorak <rakdver>
Status: RESOLVED FIXED    
Severity: normal CC: christian.joensson, gcc-bugs, rakdver
Priority: P3    
Version: 4.3.0   
Target Milestone: ---   
Host: Target:
Build: Known to work:
Known to fail: Last reconfirmed: 2007-03-11 22:31:17
Bug Depends on:    
Bug Blocks: 29975    

Description Joost VandeVondele 2007-02-17 16:15:13 UTC
the following, reduced from PR29975,  causes a gfortran ICE:

MODULE test
  INTEGER, PARAMETER :: dp=KIND(0.0D0), xas_scf_default=1, xas_2s_type=2
  TYPE xas_control_type
    INTEGER :: state_type,nexc_atoms
  END TYPE
  TYPE xas_environment_type
    INTEGER :: scf_method
  END TYPE
CONTAINS
  SUBROUTINE xas_env_init(xas_env, xas_control)
    TYPE(xas_environment_type), POINTER      :: xas_env
    TYPE(xas_control_type)                   :: xas_control
    REAL(dp), DIMENSION(:, :), POINTER       :: sto_alpha

      IF(xas_env%scf_method==xas_scf_default) THEN
        ALLOCATE(sto_alpha(1,0:1),STAT=istat)
      ELSEIF( xas_control%state_type == xas_2s_type ) THEN
        ALLOCATE(sto_alpha(2,0:1),STAT=istat)
      END IF
      DO iat = 1,xas_control%nexc_atoms
        sto_alpha = 0.0_dp
      END DO
  END SUBROUTINE xas_env_init
END MODULE



gfortran -O2 -ftree-loop-linear test.f90
test.f90: In function ‘xas_env_init’:
test.f90:10: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
Comment 1 Steven Bosscher 2007-02-17 20:24:41 UTC
(gdb) run
Starting program: ./f951 -O2 -ftree-loop-linear t.f90
 xas_env_init
Analyzing compilation unit
Performing interprocedural optimizations
 <visibility> <early_local_cleanups> <inline> <static-var> <pure-const> <type-escape-var>Assembling functions:
 xas_env_init
Program received signal SIGSEGV, Segmentation fault.
0x0000000000d17446 in can_convert_to_perfect_nest (loop=0x1147530)
    at ../../trunk/gcc/lambda-code.c:2363
2363                                    if (bb_for_stmt (arg_stmt)->loop_father
(gdb) bt 10
#0  0x0000000000d17446 in can_convert_to_perfect_nest (loop=0x1147530)
    at ../../trunk/gcc/lambda-code.c:2363
#1  0x0000000000d1272b in gcc_loopnest_to_lambda_loopnest (loop_nest=0x1147530,
    inductionvars=0x7ffffff106b8, invariants=0x7ffffff106b0) at ../../trunk/gcc/lambda-code.c:1475
#2  0x0000000000ce2944 in linear_transform_loops () at ../../trunk/gcc/tree-loop-linear.c:322
#3  0x0000000000902b26 in tree_linear_transform () at ../../trunk/gcc/tree-ssa-loop.c:217
#4  0x0000000000729274 in execute_one_pass (pass=0x1048420) at ../../trunk/gcc/passes.c:1055
#5  0x00000000007293be in execute_pass_list (pass=0x1048420) at ../../trunk/gcc/passes.c:1107
#6  0x00000000007293dc in execute_pass_list (pass=0x1048240) at ../../trunk/gcc/passes.c:1108
#7  0x00000000007293dc in execute_pass_list (pass=0x1047700) at ../../trunk/gcc/passes.c:1108
#8  0x0000000000852d84 in tree_rest_of_compilation (fndecl=0x2aaaab14d2a0)
    at ../../trunk/gcc/tree-optimize.c:412
#9  0x0000000000479d6b in gfc_expand_function (fndecl=0x2aaaab14d2a0)
    at ../../trunk/gcc/fortran/f95-lang.c:239
(More stack frames follow...)
(gdb)        
Comment 2 Zdenek Dvorak 2007-03-12 21:56:24 UTC
Subject: Bug 30835

Author: rakdver
Date: Mon Mar 12 21:56:12 2007
New Revision: 122866

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=122866
Log:
	PR tree-optimization/30835
	* lambda-code.c (can_convert_to_perfect_nest): Check whether
	bb_for_stmt is not NULL before accessing it.


Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/lambda-code.c

Comment 3 Joost VandeVondele 2007-03-14 16:30:47 UTC
(In reply to comment #2)

this issue now seems fixed on trunk for me as well, so I guess this could be closed.
Comment 4 Tobias Burnus 2007-03-15 08:47:21 UTC
(In reply to comment #3)
> this issue now seems fixed on trunk for me as well, so I guess this could be
> closed.
Mark FIXED based on this comment and on the fact that it works with gfortran 4.3, 4.2, 4.1.