aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJanus Weil <janus@gcc.gnu.org>2011-03-26 19:39:14 +0100
committerJanus Weil <janus@gcc.gnu.org>2011-03-26 19:39:14 +0100
commitcb83a137db640e7af9ce13ea9d42b2f90f0442cd (patch)
tree6058a9efadc39d973152a850c63e02643c831938 /gcc
parentf7b8b261e78a327c70188a30778eb1268c91cdec (diff)
downloadgcc-cb83a137db640e7af9ce13ea9d42b2f90f0442cd.zip
gcc-cb83a137db640e7af9ce13ea9d42b2f90f0442cd.tar.gz
gcc-cb83a137db640e7af9ce13ea9d42b2f90f0442cd.tar.bz2
re PR fortran/48291 ([OOP] internal compiler error, new_symbol(): Symbol name too long)
2011-03-26 Janus Weil <janus@gcc.gnu.org> PR fortran/48291 * class.c (get_unique_hashed_string): Adjust maximum allowable length for unique type string. 2011-03-26 Janus Weil <janus@gcc.gnu.org> PR fortran/48291 * gfortran.dg/class_42.f03: New. From-SVN: r171559
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/class.c6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/class_42.f0316
4 files changed, 30 insertions, 3 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index f18a01d..8f44a09 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2011-03-26 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/48291
+ * class.c (get_unique_hashed_string): Adjust maximum allowable length
+ for unique type string.
+
2011-03-25 Kai Tietz <ktietz@redhat.com>
* scanner.c (preprocessor_line): Use filename_cmp
diff --git a/gcc/fortran/class.c b/gcc/fortran/class.c
index 85da3cb..b99930a 100644
--- a/gcc/fortran/class.c
+++ b/gcc/fortran/class.c
@@ -137,9 +137,9 @@ get_unique_hashed_string (char *string, gfc_symbol *derived)
{
char tmp[2*GFC_MAX_SYMBOL_LEN+2];
get_unique_type_string (&tmp[0], derived);
- /* If string is too long, use hash value in hex representation
- (allow for extra decoration, cf. gfc_build_class_symbol)*/
- if (strlen (tmp) > GFC_MAX_SYMBOL_LEN - 10)
+ /* If string is too long, use hash value in hex representation (allow for
+ extra decoration, cf. gfc_build_class_symbol & gfc_find_derived_vtab). */
+ if (strlen (tmp) > GFC_MAX_SYMBOL_LEN - 11)
{
int h = gfc_hash_value (derived);
sprintf (string, "%X", h);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 6f2cd2a..7b6dfa3 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2011-03-26 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/48291
+ * gfortran.dg/class_42.f03: New.
+
2011-03-26 Ira Rosen <ira.rosen@linaro.org>
* gcc.dg/vect/vect-cselim-1.c: Fail on targets that don't support
diff --git a/gcc/testsuite/gfortran.dg/class_42.f03 b/gcc/testsuite/gfortran.dg/class_42.f03
new file mode 100644
index 0000000..dd59835
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/class_42.f03
@@ -0,0 +1,16 @@
+! { dg-do compile }
+!
+! PR 48291: [4.6/4.7 Regression] [OOP] internal compiler error, new_symbol(): Symbol name too long
+!
+! Contributed by Adrian Prantl <adrian@llnl.gov>
+
+module Overload_AnException_Impl
+ type :: Overload_AnException_impl_t
+ end type
+contains
+ subroutine ctor_impl(self)
+ class(Overload_AnException_impl_t) :: self
+ end subroutine
+end module
+
+! { dg-final { cleanup-modules "Overload_AnException_Impl" } }