http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48117

           Summary: ICE: OpenMP; in build_int_cst_wide, at tree.c:1178
           Product: gcc
           Version: 4.5.2
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: lo...@cray.com


> cat test.f90
MODULE mo_real_timer
  IMPLICIT NONE
  PRIVATE
  PUBLIC :: get_new_timer
  INTEGER, PARAMETER :: timer_max = 1024
  INTEGER :: top_timer = 0

  ! shared part of timer

  TYPE srt_type
     LOGICAL           :: reserved     ! usage flag
     CHARACTER(len=80) :: text         ! description of timer
  END TYPE srt_type

  ! thread private part of timer

  TYPE(srt_type), PARAMETER :: srt_init = srt_type(.FALSE., 'noname')
  TYPE(srt_type) :: srt(timer_max)

CONTAINS

  SUBROUTINE get_new_timer(itimer, text)
    INTEGER, VOLATILE, INTENT(inout):: itimer 
      ! itimer should not be threadprivate
    CHARACTER(len=*), INTENT(in), OPTIONAL :: text

    ! works like new_timer(), 
    ! but can be called from within a parallel region

  !$OMP MASTER
    IF (PRESENT(text)) srt(top_timer)%text = adjustl(text)
  !$OMP END MASTER

  END SUBROUTINE get_new_timer
END MODULE mo_real_timer
> gfortran -c -O2 test.f90
> gfortran -c -fopenmp test.f90
> gfortran -c -fopenmp -O2 test.f90
test.f90: In function 'get_new_timer':
test.f90:22:0: internal compiler error: in build_int_cst_wide, at tree.c:1178
...
> gfortran -v
Using built-in specs.
COLLECT_GCC=/opt/gcc/4.5.2/bin/../snos/bin/gfortran
...
Thread model: posix
gcc version 4.5.2 20101216 (Cray Inc.) (GCC) 
>

Compiles OK with either -O2 or -fopenmp, but ICE when both used together.

Reply via email to