Commit c8bd326c by Paul Thomas

re PR fortran/80965 (ICE with class argument and -O2 optimization)

2018-03-03  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/80965
	* resolve.c (build_loc_call): Change symtree name from 'loc' to
	'_loc'.

2018-03-03  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/80965
	* gfortran.dg/select_type_41.f90: New test.

From-SVN: r258195
parent 129c8d7e
2018-03-03 Paul Thomas <pault@gcc.gnu.org>
PR fortran/80965
* resolve.c (build_loc_call): Change symtree name from 'loc' to
'_loc'.
2018-03-01 Paul Thomas <pault@gcc.gnu.org> 2018-03-01 Paul Thomas <pault@gcc.gnu.org>
PR fortran/84219 PR fortran/84219
......
...@@ -8712,7 +8712,7 @@ build_loc_call (gfc_expr *sym_expr) ...@@ -8712,7 +8712,7 @@ build_loc_call (gfc_expr *sym_expr)
gfc_expr *loc_call; gfc_expr *loc_call;
loc_call = gfc_get_expr (); loc_call = gfc_get_expr ();
loc_call->expr_type = EXPR_FUNCTION; loc_call->expr_type = EXPR_FUNCTION;
gfc_get_sym_tree ("loc", gfc_current_ns, &loc_call->symtree, false); gfc_get_sym_tree ("_loc", gfc_current_ns, &loc_call->symtree, false);
loc_call->symtree->n.sym->attr.flavor = FL_PROCEDURE; loc_call->symtree->n.sym->attr.flavor = FL_PROCEDURE;
loc_call->symtree->n.sym->attr.intrinsic = 1; loc_call->symtree->n.sym->attr.intrinsic = 1;
loc_call->symtree->n.sym->result = loc_call->symtree->n.sym; loc_call->symtree->n.sym->result = loc_call->symtree->n.sym;
......
2018-03-03 Paul Thomas <pault@gcc.gnu.org>
PR fortran/80965
* gfortran.dg/select_type_41.f90: New test.
2018-03-02 Paolo Carlini <paolo.carlini@oracle.com> 2018-03-02 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/61135 PR c++/61135
......
! { dg-do compile }
! { dg-options "-O2" }
!
! Tests the fix for PR80965 in which the use of the name 'loc'
! for the dummy argument of 'xyz' caused an ICE. If the module
! was used, the error "DUMMY attribute conflicts with INTRINSIC
! attribute in ‘loc’ at (1)" was emitted. Note that although 'loc'
! is a GNU extension and so can be over-ridden, this is not very
! good practice.
!
! Contributed by David Sagan <david.sagan@gmail.com>
!
module mode3_mod
contains
subroutine xyz (loc)
implicit none
class(*) :: loc
real x(6)
integer ix_use
select type (loc)
type is (integer)
x = 0
print *, "integer"
type is (real)
ix_use = 0
print *, "real"
end select
end subroutine xyz
end module mode3_mod
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment