[Bug fortran/28600] [4.2 regression] ICE on character pointer assignment

2006-09-22 Thread jakub at gcc dot gnu dot org


--- Comment #10 from jakub at gcc dot gnu dot org  2006-09-22 11:48 ---
Subject: Bug 28600

Author: jakub
Date: Fri Sep 22 11:48:18 2006
New Revision: 117137

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=117137
Log:
2006-08-09 Paul Thomas [EMAIL PROTECTED]

PR fortran/28600
* trans-decl.c (gfc_get_symbol_decl): Ensure that the
DECL_CONTEXT of the length of a character dummy is the
same as that of the symbol declaration.

* gfortran.dg/assumed_charlen_function_4.f90: New test.

Added:
   
branches/redhat/gcc-4_1-branch/gcc/testsuite/gfortran.dg/assumed_charlen_function_4.f90
Modified:
branches/redhat/gcc-4_1-branch/gcc/fortran/ChangeLog
branches/redhat/gcc-4_1-branch/gcc/fortran/trans-decl.c
branches/redhat/gcc-4_1-branch/gcc/testsuite/ChangeLog


-- 


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



[Bug fortran/28600] [4.2 regression] ICE on character pointer assignment

2006-08-20 Thread pault at gcc dot gnu dot org


--- Comment #9 from pault at gcc dot gnu dot org  2006-08-20 18:11 ---
Fixed

Paul


-- 

pault at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED


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



[Bug fortran/28600] [4.2 regression] ICE on character pointer assignment

2006-08-19 Thread pault at gcc dot gnu dot org


--- Comment #8 from pault at gcc dot gnu dot org  2006-08-20 05:46 ---
Subject: Bug 28600

Author: pault
Date: Sun Aug 20 05:45:43 2006
New Revision: 116268

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=116268
Log:
2006-08-20 Paul Thomas [EMAIL PROTECTED]

PR fortran/28601
PR fortran/28630
* gfortran.h : Eliminate gfc_dt_list structure and reference
to it in gfc_namespace.
* resolve.c (resolve_fl_derived): Remove the building of the
list of derived types for the current namespace.
* symbol.c (find_renamed_type): New function to find renamed
derived types by symbol name rather than symtree name.
(gfc_use_derived): Search parent namespace for identical
derived type and use it, even if local version is complete,
except in interface bodies. Ensure that renamed derived types
are found by call to find_renamed_type. Recurse for derived
type components.
(gfc_free_dt_list): Remove.
(gfc_free_namespace): Remove call to previous.
* trans-types.c (copy_dt_decls_ifequal): Remove.
(gfc_get_derived_type): Remove all the paraphenalia for
association of derived types, including calls to previous.
* match.c (gfc_match_allocate): Call gfc_use_derived to
associate any derived types that are being allocated.

PR fortran/20886
* resolve.c (resolve_actual_arglist): The passing of
a generic procedure name as an actual argument is an
error.

PR fortran/28735
* resolve.c (resolve_variable): Check for a symtree before
resolving references.

PR fortran/28762
* primary.c (match_variable): Return MATCH_NO if the symbol
is that of the program.

PR fortran/28425
* trans-expr.c (gfc_trans_subcomponent_assign): Translate
derived type component expressions other than another derived
type constructor.

PR fortran/28496
* expr.c (find_array_section): Correct errors in
the handling of a missing start value for the
index triplet in an array reference.

PR fortran/18111
* trans-decl.c (gfc_build_dummy_array_decl): Before resetting
reference to backend_decl, set it DECL_ARTIFICIAL.
(gfc_get_symbol_decl): Likewise for original dummy decl, when
a copy is made of an array.
(create_function_arglist): Likewise for the _entry paramter
in entry_masters.
(build_entry_thunks): Likewise for dummies in entry thunks.

PR fortran/28600
* trans-decl.c (gfc_get_symbol_decl): Ensure that the
DECL_CONTEXT of the length of a character dummy is the
same as that of the symbol declaration.

PR fortran/28771
* decl.c (add_init_expr_to_sym): Remove setting of charlen for
an initializer of an assumed charlen variable.

PR fortran/28660
* trans-decl.c (generate_expr_decls): New function.
(generate_dependency_declarations): New function.
(generate_local_decl): Call previous if not either a dummy or
a declaration in an entry master.

2006-08-20 Paul Thomas [EMAIL PROTECTED]

PR fortran/28630
* gfortran.dg/used_types_2.f90: New test.

PR fortran/28601
* gfortran.dg/used_types_3.f90: New test.

PR fortran/20886
* gfortran.dg/generic_actual_arg.f90: New test.

PR fortran/28735
* gfortran.dg/module_private_array_refs_1.f90: New test.

PR fortran/28762
* gfortran.dg/program_name_1.f90: New test.

PR fortran/28425
* gfortran.dg/derived_constructor_comps_1.f90: New test.

PR fortran/28496
* gfortran.dg/array_initializer_2.f90: New test.

PR fortran/18111
* gfortran.dg/unused_artificial_dummies_1.f90: New test. 

PR fortran/28600
* gfortran.dg/assumed_charlen_function_4.f90: New test.

PR fortran/28771
* gfortran.dg/assumed_charlen_in_main.f90: New test.

PR fortran/28660
* gfortran.dg/dependent_decls_1.f90: New test.

Added:
trunk/gcc/testsuite/gfortran.dg/array_initializer_2.f90
trunk/gcc/testsuite/gfortran.dg/assumed_charlen_function_4.f90
trunk/gcc/testsuite/gfortran.dg/assumed_charlen_in_main.f90
trunk/gcc/testsuite/gfortran.dg/dependent_decls_1.f90
trunk/gcc/testsuite/gfortran.dg/derived_constructor_comps_1.f90
trunk/gcc/testsuite/gfortran.dg/generic_actual_arg.f90
trunk/gcc/testsuite/gfortran.dg/module_private_array_refs_1.f90
trunk/gcc/testsuite/gfortran.dg/program_name_1.f90
trunk/gcc/testsuite/gfortran.dg/unused_artificial_dummies_1.f90
trunk/gcc/testsuite/gfortran.dg/used_types_2.f90
trunk/gcc/testsuite/gfortran.dg/used_types_3.f90
Modified:
trunk/gcc/fortran/ChangeLog
trunk/gcc/fortran/decl.c
trunk/gcc/fortran/expr.c
trunk/gcc/fortran/gfortran.h

[Bug fortran/28600] [4.2 regression] ICE on character pointer assignment

2006-08-09 Thread jakub at gcc dot gnu dot org


-- 

jakub at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|unassigned at gcc dot gnu   |jakub at gcc dot gnu dot org
   |dot org |
 Status|NEW |ASSIGNED
   Last reconfirmed|2006-08-04 12:55:02 |2006-08-09 14:00:33
   date||


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



[Bug fortran/28600] [4.2 regression] ICE on character pointer assignment

2006-08-09 Thread patchapp at dberlin dot org


--- Comment #4 from patchapp at dberlin dot org  2006-08-09 14:20 ---
Subject: Bug number PR28600

A patch for this bug has been added to the patch tracker.
The mailing list url for the patch is
http://gcc.gnu.org/ml/gcc-patches/2006-08/msg00266.html


-- 


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



[Bug fortran/28600] [4.2 regression] ICE on character pointer assignment

2006-08-09 Thread jakub at gcc dot gnu dot org


--- Comment #5 from jakub at gcc dot gnu dot org  2006-08-09 14:29 ---
It was caused by the openmp changes, but guess usually the parent routine
at least touches the dummy argument and therefore it would be added to the
right context.
I was testing:
--- trans-decl.c.jj 2006-08-09 15:39:36.0 +0200
+++ trans-decl.c2006-08-09 15:44:35.0 +0200
@@ -884,7 +884,10 @@ gfc_get_symbol_decl (gfc_symbol * sym)
  if (TREE_CODE (length) == VAR_DECL
   DECL_CONTEXT (length) == NULL_TREE)
{
- gfc_add_decl_to_function (length);
+ if (sym-ns-proc_name-backend_decl == current_function_decl)
+   gfc_add_decl_to_function (length);
+ else
+   gfc_add_decl_to_parent_function (length);
  gfc_defer_symbol_init (sym);
}
}
before I saw Paul's patch on gcc-patches, guess both versions will DTRT.


-- 


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



[Bug fortran/28600] [4.2 regression] ICE on character pointer assignment

2006-08-09 Thread pinskia at gcc dot gnu dot org


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

   Target Milestone|--- |4.2.0


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



[Bug fortran/28600] [4.2 regression] ICE on character pointer assignment

2006-08-09 Thread pault at gcc dot gnu dot org


--- Comment #6 from pault at gcc dot gnu dot org  2006-08-09 18:27 ---
(In reply to comment #5)
 It was caused by the openmp changes, but guess usually the parent routine
 at least touches the dummy argument and therefore it would be added to the
 right context.
 I was testing:
 --- trans-decl.c.jj 2006-08-09 15:39:36.0 +0200
 +++ trans-decl.c2006-08-09 15:44:35.0 +0200
 @@ -884,7 +884,10 @@ gfc_get_symbol_decl (gfc_symbol * sym)
   if (TREE_CODE (length) == VAR_DECL
DECL_CONTEXT (length) == NULL_TREE)
 {
 - gfc_add_decl_to_function (length);
 + if (sym-ns-proc_name-backend_decl == current_function_decl)
 +   gfc_add_decl_to_function (length);
 + else
 +   gfc_add_decl_to_parent_function (length);
   gfc_defer_symbol_init (sym);
 }
 }
 before I saw Paul's patch on gcc-patches, guess both versions will DTRT.
 

Your call or mine, Jakub?  I suggest a tall glass of beer and arm wrestling for
the honours...

Paul


-- 


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



[Bug fortran/28600] [4.2 regression] ICE on character pointer assignment

2006-08-09 Thread jakub at gcc dot gnu dot org


--- Comment #7 from jakub at gcc dot gnu dot org  2006-08-09 18:36 ---
Go with your version, you posted first ;).
I added the comment just to support your patch, that I independently came
to a (almost) same fix.


-- 

jakub at gcc dot gnu dot org changed:

   What|Removed |Added

   Target Milestone|4.2.0   |---


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



[Bug fortran/28600] [4.2 regression] ICE on character pointer assignment

2006-08-09 Thread pinskia at gcc dot gnu dot org


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

   Target Milestone|--- |4.2.0


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



[Bug fortran/28600] [4.2 regression] ICE on character pointer assignment

2006-08-08 Thread paul dot richard dot thomas at cea dot fr


--- Comment #3 from paul dot richard dot thomas at cea dot fr  2006-08-08 
14:15 ---
(In reply to comment #2)
 I wonder if this was caused by Jakub's patches for openmp.

Or Richard Sandiford's patches. The above produces:
gee ()
{
  int4 .s;

  __builtin_memmove ((*(char[0:][1:3] *) m.data)[NON_LVALUE_EXPR
m.dim[0].stri
de + m.offset], s, 3);
}


bar (s, n, _s)
{
  struct array1_unknown m;
  bit_size_type D.914;
  unnamed type D.915;
  static void gee (void);

  .s = *n;
  D.914 = (bit_size_type) (unnamed type) .s * 8;
  D.915 = (unnamed type) .s;
  m.data = 0B;
}
so that .s is declared in gee but used in bar.

This:

subroutine bar(s, n)
 integer n
 character s*(*)
 character*3, dimension(:), pointer :: m
contains
 subroutine gee
m(1) = s(1:3)
 end subroutine gee
end subroutine bar

compiles correctly and outputs this code:

gee ()
{
  __builtin_memmove ((*(char[0:][1:3] *) m.data)[NON_LVALUE_EXPR
m.dim[0].stri
de + m.offset], s, 3);


bar (s, n, _s)
{
  struct array1_unknown m;
  bit_size_type D.913;
  unnamed type D.914;
  static void gee (void);

  D.913 = (bit_size_type) (unnamed type) _s * 8;
  D.914 = (unnamed type) _s;
  m.data = 0B;
}

where _s is used directly.

The declaration for .s needs to be boosted to the correct context.

Paul


-- 


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