aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJanus Weil <janus@gcc.gnu.org>2010-12-12 22:14:13 +0100
committerJanus Weil <janus@gcc.gnu.org>2010-12-12 22:14:13 +0100
commit2c3d0cd3885a4c7786c0a62b6e46a7b244d3ce4e (patch)
tree95da660609df055dbd848091eb8141622c4ddb4b /gcc
parent4a10fb9416cefe050c804006aa77ca4fd6a8e8ab (diff)
downloadgcc-2c3d0cd3885a4c7786c0a62b6e46a7b244d3ce4e.zip
gcc-2c3d0cd3885a4c7786c0a62b6e46a7b244d3ce4e.tar.gz
gcc-2c3d0cd3885a4c7786c0a62b6e46a7b244d3ce4e.tar.bz2
re PR fortran/46809 ([OOP] ICE with -fcheck=pointer for CLASS IS)
2010-12-12 Janus Weil <janus@gcc.gnu.org> PR fortran/46809 * resolve.c (resolve_select_type): Set the location of the first argument when generating the EXTENDS_TYPE_OF call. 2010-12-12 Janus Weil <janus@gcc.gnu.org> PR fortran/46809 * gfortran.dg/pointer_check_8.f90: New. From-SVN: r167731
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/resolve.c1
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/pointer_check_8.f9021
4 files changed, 33 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 90337d2..734b493 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2010-12-12 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/46809
+ * resolve.c (resolve_select_type): Set the location of the first
+ argument when generating the EXTENDS_TYPE_OF call.
+
2010-12-11 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/46705
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index ab49e93..a27fe2d 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -7893,6 +7893,7 @@ resolve_select_type (gfc_code *code, gfc_namespace *old_ns)
/* Set up arguments. */
new_st->expr1->value.function.actual = gfc_get_actual_arglist ();
new_st->expr1->value.function.actual->expr = gfc_get_variable_expr (code->expr1->symtree);
+ new_st->expr1->value.function.actual->expr->where = code->loc;
gfc_add_vptr_component (new_st->expr1->value.function.actual->expr);
vtab = gfc_find_derived_vtab (body->ext.case_list->ts.u.derived);
st = gfc_find_symtree (vtab->ns->sym_root, vtab->name);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index ee46df3..5cf2c03 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2010-12-12 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/46809
+ * gfortran.dg/pointer_check_8.f90: New.
+
2010-12-11 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/46705
diff --git a/gcc/testsuite/gfortran.dg/pointer_check_8.f90 b/gcc/testsuite/gfortran.dg/pointer_check_8.f90
new file mode 100644
index 0000000..b47aa97
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pointer_check_8.f90
@@ -0,0 +1,21 @@
+! { dg-do compile}
+! { dg-options "-fcheck=pointer" }
+!
+! PR 46809: [OOP] ICE with -fcheck=pointer for CLASS IS
+!
+! Contributed by Salvatore Filippone <sfilippone@uniroma2.it>
+
+ type t
+ end type t
+
+contains
+
+ subroutine sub(a)
+ class(t) :: a
+ select type (a)
+ class is (t)
+ print *, 'Hi there'
+ end select
+ end subroutine
+
+end