------- Comment #2 from burnus at gcc dot gnu dot org  2007-09-25 19:16 -------
Work around:  Change the intent to INOUT in:
  subroutine construct_temp (temp)
    type (t_temp), intent(out) :: temp (:)

or - which is effectively the same - remove the default initializer:

  type t_datum
    character(len=8) :: mn = ''

>From the dump:

construct_temp (temp)
{
  int8 ubound.0;
  int8 stride.1;
  if (temp != 0)
    {
      {
        int8 D.888;
        int8 D.887;

        D.887 = offset.2;
        D.888 = ubound.0;

Question to the reader: Which value has ubound and offset in the assignment
above?


-- 

burnus at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |burnus at gcc dot gnu dot
                   |                            |org
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   GCC host triplet|i686-pc-linux-gnu           |
           Keywords|                            |wrong-code
   Last reconfirmed|0000-00-00 00:00:00         |2007-09-25 19:16:45
               date|                            |
            Summary|Runtime segfault with nested|Seg.fault: Default
                   |derived types with -O0      |initialization of derived
                   |                            |type uses initialized values


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

Reply via email to