diff options
author | Janus Weil <janus@gcc.gnu.org> | 2011-03-26 19:39:14 +0100 |
---|---|---|
committer | Janus Weil <janus@gcc.gnu.org> | 2011-03-26 19:39:14 +0100 |
commit | cb83a137db640e7af9ce13ea9d42b2f90f0442cd (patch) | |
tree | 6058a9efadc39d973152a850c63e02643c831938 /gcc | |
parent | f7b8b261e78a327c70188a30778eb1268c91cdec (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/class.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/class_42.f03 | 16 |
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" } } |