public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug fortran/55868] New: gfortran generates for CLASS(*)   __m_MOD___vtab__$tar on NO_DOLLAR_IN_LABEL systems
@ 2013-01-03 17:28 burnus at gcc dot gnu.org
  2013-01-07 14:00 ` [Bug fortran/55868] [4.8 Regression] " burnus at gcc dot gnu.org
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: burnus at gcc dot gnu.org @ 2013-01-03 17:28 UTC (permalink / raw)
  To: gcc-bugs


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

             Bug #: 55868
           Summary: gfortran generates for CLASS(*)   __m_MOD___vtab__$tar
                    on NO_DOLLAR_IN_LABEL systems
    Classification: Unclassified
           Product: gcc
           Version: 4.8.0
            Status: UNCONFIRMED
          Severity: critical
          Priority: P3
         Component: fortran
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: burnus@gcc.gnu.org
                CC: pault@gcc.gnu.org


The program below yields the following symbols, the first one is invalid if
NO_DOLLAR_IN_LABEL is defined for the target

0000000000000000 R __m_MOD___vtab__$tar
0000000000000000 D __m_MOD_x

module m
class(*), pointer :: x => null()
end module m

Consider using GFC_PREFIX instead or ensure otherwise that the symbol does not
appear in the object file. (Names with $ are fine if they only appear as local
variables.)


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug fortran/55868] [4.8 Regression] gfortran generates for CLASS(*)   __m_MOD___vtab__$tar on NO_DOLLAR_IN_LABEL systems
  2013-01-03 17:28 [Bug fortran/55868] New: gfortran generates for CLASS(*) __m_MOD___vtab__$tar on NO_DOLLAR_IN_LABEL systems burnus at gcc dot gnu.org
@ 2013-01-07 14:00 ` burnus at gcc dot gnu.org
  2013-01-08  9:13 ` jakub at gcc dot gnu.org
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: burnus at gcc dot gnu.org @ 2013-01-07 14:00 UTC (permalink / raw)
  To: gcc-bugs


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

Tobias Burnus <burnus at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |burnus at gcc dot gnu.org
   Target Milestone|---                         |4.8.0
            Summary|gfortran generates for      |[4.8 Regression] gfortran
                   |CLASS(*)                    |generates for CLASS(*)
                   |__m_MOD___vtab__$tar on     |__m_MOD___vtab__$tar on
                   |NO_DOLLAR_IN_LABEL systems  |NO_DOLLAR_IN_LABEL systems

--- Comment #1 from Tobias Burnus <burnus at gcc dot gnu.org> 2013-01-07 14:00:22 UTC ---
Mark as regression to ensure it is fixed before the 4.8 release


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug fortran/55868] [4.8 Regression] gfortran generates for CLASS(*)   __m_MOD___vtab__$tar on NO_DOLLAR_IN_LABEL systems
  2013-01-03 17:28 [Bug fortran/55868] New: gfortran generates for CLASS(*) __m_MOD___vtab__$tar on NO_DOLLAR_IN_LABEL systems burnus at gcc dot gnu.org
  2013-01-07 14:00 ` [Bug fortran/55868] [4.8 Regression] " burnus at gcc dot gnu.org
@ 2013-01-08  9:13 ` jakub at gcc dot gnu.org
  2013-01-08  9:37 ` burnus at gcc dot gnu.org
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: jakub at gcc dot gnu.org @ 2013-01-08  9:13 UTC (permalink / raw)
  To: gcc-bugs


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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org

--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> 2013-01-08 09:13:12 UTC ---
I'd say GFC_PREFIX wouldn't improve this, I'd keep using $ unless
NO_DOLLAR_IN_LABEL, otherwise fallback to . if NO_DOT_IN_LABEL and as last
fallback use _ in this case.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug fortran/55868] [4.8 Regression] gfortran generates for CLASS(*)   __m_MOD___vtab__$tar on NO_DOLLAR_IN_LABEL systems
  2013-01-03 17:28 [Bug fortran/55868] New: gfortran generates for CLASS(*) __m_MOD___vtab__$tar on NO_DOLLAR_IN_LABEL systems burnus at gcc dot gnu.org
  2013-01-07 14:00 ` [Bug fortran/55868] [4.8 Regression] " burnus at gcc dot gnu.org
  2013-01-08  9:13 ` jakub at gcc dot gnu.org
@ 2013-01-08  9:37 ` burnus at gcc dot gnu.org
  2013-01-08  9:41 ` jakub at gcc dot gnu.org
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: burnus at gcc dot gnu.org @ 2013-01-08  9:37 UTC (permalink / raw)
  To: gcc-bugs


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

--- Comment #3 from Tobias Burnus <burnus at gcc dot gnu.org> 2013-01-08 09:37:00 UTC ---
(In reply to comment #2)
> I'd say GFC_PREFIX wouldn't improve this, I'd keep using $ unless
> NO_DOLLAR_IN_LABEL, otherwise fallback to . if NO_DOT_IN_LABEL and as last
> fallback use _ in this case.

I actually wonder whether the $ or . is really needed. The leading "__" puts it
firmly into the realm of the compiler and to avoid clashes with user-defined
types, using upper case is enough as all user-defined type names are converted
into lower case.

Hence, the following untested patch should be enough.

Another question is whether we want change at some point (e.g. ABI breaking due
to the new array descriptor?) the __vtab mangling to contains a "."  (if
available) to reduce the chance of name clashes even further.

--- a/gcc/fortran/class.c
+++ b/gcc/fortran/class.c
@@ -464 +464 @@ get_unique_type_string (char *string, gfc_symbol *derived)
-    sprintf (dt_name, "%s", "$tar");
+    sprintf (dt_name, "%s", "STAR");
diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c
index 3a36cad..fef44d5 100644
--- a/gcc/fortran/decl.c
+++ b/gcc/fortran/decl.c
@@ -2769 +2769 @@ gfc_match_decl_type_spec (gfc_typespec *ts, int
implicit_flag)
-         gfc_find_symbol ("$tar", gfc_current_ns, 1, &upe);
+         gfc_find_symbol ("STAR", gfc_current_ns, 1, &upe);
@@ -2772,2 +2772,2 @@ gfc_match_decl_type_spec (gfc_typespec *ts, int 
-             upe = gfc_new_symbol ("$tar", gfc_current_ns);
-             st = gfc_new_symtree (&gfc_current_ns->sym_root, "$tar");
+             upe = gfc_new_symbol ("STAR", gfc_current_ns);
+             st = gfc_new_symtree (&gfc_current_ns->sym_root, "STAR");
@@ -2788 +2788 @@ gfc_match_decl_type_spec (gfc_typespec *ts, int
implicit_flag)
-             st = gfc_find_symtree (gfc_current_ns->sym_root, "$tar");
+             st = gfc_find_symtree (gfc_current_ns->sym_root, "STAR");
@@ -2790 +2790 @@ gfc_match_decl_type_spec (gfc_typespec *ts, int
implicit_flag)
-               st = gfc_new_symtree (&gfc_current_ns->sym_root, "$tar");
+               st = gfc_new_symtree (&gfc_current_ns->sym_root, "STAR");


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug fortran/55868] [4.8 Regression] gfortran generates for CLASS(*)   __m_MOD___vtab__$tar on NO_DOLLAR_IN_LABEL systems
  2013-01-03 17:28 [Bug fortran/55868] New: gfortran generates for CLASS(*) __m_MOD___vtab__$tar on NO_DOLLAR_IN_LABEL systems burnus at gcc dot gnu.org
                   ` (2 preceding siblings ...)
  2013-01-08  9:37 ` burnus at gcc dot gnu.org
@ 2013-01-08  9:41 ` jakub at gcc dot gnu.org
  2013-01-12 12:53 ` pault at gcc dot gnu.org
  2013-01-12 12:58 ` pault at gcc dot gnu.org
  5 siblings, 0 replies; 7+ messages in thread
From: jakub at gcc dot gnu.org @ 2013-01-08  9:41 UTC (permalink / raw)
  To: gcc-bugs


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

--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> 2013-01-08 09:41:29 UTC ---
Fine with me.  Just a note, sprintf (dt_name, "%s", "STAR"); would be better
written as strcpy (dt_name, "STAR");


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug fortran/55868] [4.8 Regression] gfortran generates for CLASS(*)   __m_MOD___vtab__$tar on NO_DOLLAR_IN_LABEL systems
  2013-01-03 17:28 [Bug fortran/55868] New: gfortran generates for CLASS(*) __m_MOD___vtab__$tar on NO_DOLLAR_IN_LABEL systems burnus at gcc dot gnu.org
                   ` (3 preceding siblings ...)
  2013-01-08  9:41 ` jakub at gcc dot gnu.org
@ 2013-01-12 12:53 ` pault at gcc dot gnu.org
  2013-01-12 12:58 ` pault at gcc dot gnu.org
  5 siblings, 0 replies; 7+ messages in thread
From: pault at gcc dot gnu.org @ 2013-01-12 12:53 UTC (permalink / raw)
  To: gcc-bugs


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

--- Comment #5 from Paul Thomas <pault at gcc dot gnu.org> 2013-01-12 12:52:45 UTC ---
Author: pault
Date: Sat Jan 12 12:52:41 2013
New Revision: 195124

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=195124
Log:
2013-01-08  Paul Thomas  <pault@gcc.gnu.org>

    PR fortran/55868
    * class.c (get_unique_type_string): Change $tar to STAR and
    replace sprintf by strcpy where there is no formatting.
    * decl.c (gfc_match_decl_type_spec): Change $tar to STAR.

2013-01-08  Paul Thomas  <pault@gcc.gnu.org>

    PR fortran/55868
    * gfortran.dg/unlimited_polymorphic_8.f90: Update
    scan-tree-dump-times for foo.0.x._vptr to deal with change from
    $tar to STAR.

Modified:
    trunk/gcc/fortran/ChangeLog
    trunk/gcc/fortran/class.c
    trunk/gcc/fortran/decl.c
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/gfortran.dg/unlimited_polymorphic_8.f90


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug fortran/55868] [4.8 Regression] gfortran generates for CLASS(*)   __m_MOD___vtab__$tar on NO_DOLLAR_IN_LABEL systems
  2013-01-03 17:28 [Bug fortran/55868] New: gfortran generates for CLASS(*) __m_MOD___vtab__$tar on NO_DOLLAR_IN_LABEL systems burnus at gcc dot gnu.org
                   ` (4 preceding siblings ...)
  2013-01-12 12:53 ` pault at gcc dot gnu.org
@ 2013-01-12 12:58 ` pault at gcc dot gnu.org
  5 siblings, 0 replies; 7+ messages in thread
From: pault at gcc dot gnu.org @ 2013-01-12 12:58 UTC (permalink / raw)
  To: gcc-bugs


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

Paul Thomas <pault at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|                            |FIXED

--- Comment #6 from Paul Thomas <pault at gcc dot gnu.org> 2013-01-12 12:58:39 UTC ---
Fixed on trunk.

Thanks for the report.

Paul


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2013-01-12 12:58 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-01-03 17:28 [Bug fortran/55868] New: gfortran generates for CLASS(*) __m_MOD___vtab__$tar on NO_DOLLAR_IN_LABEL systems burnus at gcc dot gnu.org
2013-01-07 14:00 ` [Bug fortran/55868] [4.8 Regression] " burnus at gcc dot gnu.org
2013-01-08  9:13 ` jakub at gcc dot gnu.org
2013-01-08  9:37 ` burnus at gcc dot gnu.org
2013-01-08  9:41 ` jakub at gcc dot gnu.org
2013-01-12 12:53 ` pault at gcc dot gnu.org
2013-01-12 12:58 ` pault at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).