Patchwork [fortran] Make block names unique

login
register
mail settings
Submitter Thomas Koenig
Date April 22, 2011, 8:07 p.m.
Message ID <4DB1E003.6000304@netcologne.de>
Download mbox | patch
Permalink /patch/92578/
State New
Headers show

Comments

Thomas Koenig - April 22, 2011, 8:07 p.m.
Hello world,

the attached patch makes block names unique, so that
-fdump-fortran-original dumps are easier to read.

Regression-tested. OK for trunk?

	Thomas

2011-04-22  Thomas Koenig  <tkoenig@gcc.gnu.org>

         * decl.c (gfc_match_end):  Check that the block name starts
         with "block@".
         * parse.c (gfc_build_block_ns):  Make block names unique by
         numbering them.
Thomas Koenig - April 25, 2011, 10:40 p.m.
Am 22.04.2011 22:07, schrieb Thomas Koenig:
> Hello world,
>
> the attached patch makes block names unique, so that
> -fdump-fortran-original dumps are easier to read.
>
> Regression-tested. OK for trunk?
>
> Thomas
>
> 2011-04-22 Thomas Koenig <tkoenig@gcc.gnu.org>
>
> * decl.c (gfc_match_end): Check that the block name starts
> with "block@".
> * parse.c (gfc_build_block_ns): Make block names unique by
> numbering them.

Ping ** 0.25?

	Thomas
Mikael Morin - April 26, 2011, 9:27 p.m.
On Tuesday 26 April 2011 00:40:40 Thomas Koenig wrote:
> Am 22.04.2011 22:07, schrieb Thomas Koenig:
> > Hello world,
> > 
> > the attached patch makes block names unique, so that
> > -fdump-fortran-original dumps are easier to read.
> > 
> > Regression-tested. OK for trunk?
> > 
> > Thomas
> > 
> > 2011-04-22 Thomas Koenig <tkoenig@gcc.gnu.org>
> > 
> > * decl.c (gfc_match_end): Check that the block name starts
> > with "block@".
> > * parse.c (gfc_build_block_ns): Make block names unique by
> > numbering them.
> 
> Ping ** 0.25?
> 
> 	Thomas
OK
Thomas Koenig - April 26, 2011, 10:07 p.m.
Hi Mikael,


>>> * decl.c (gfc_match_end): Check that the block name starts
>>> with "block@".
>>> * parse.c (gfc_build_block_ns): Make block names unique by
>>> numbering them.
>>
>> Ping ** 0.25?
>>
>> 	Thomas
> OK
>

Waiting for Emacs...
Sending        fortran/ChangeLog
Sending        fortran/decl.c
Sending        fortran/parse.c
Transmitting file data ...
Committed revision 172990.

Thanks for the review!

	Thomas

Patch

Index: decl.c
===================================================================
--- decl.c	(Revision 172856)
+++ decl.c	(Arbeitskopie)
@@ -5746,7 +5746,7 @@  gfc_match_end (gfc_statement *st)
     {
     case COMP_ASSOCIATE:
     case COMP_BLOCK:
-      if (!strcmp (block_name, "block@"))
+      if (!strncmp (block_name, "block@", strlen("block@")))
 	block_name = NULL;
       break;
 
Index: parse.c
===================================================================
--- parse.c	(Revision 172856)
+++ parse.c	(Arbeitskopie)
@@ -3135,6 +3135,7 @@  gfc_namespace*
 gfc_build_block_ns (gfc_namespace *parent_ns)
 {
   gfc_namespace* my_ns;
+  static int numblock = 1;
 
   my_ns = gfc_get_namespace (parent_ns, 1);
   my_ns->construct_entities = 1;
@@ -3149,8 +3150,10 @@  gfc_build_block_ns (gfc_namespace *parent_ns)
   else
     {
       gfc_try t;
+      char buffer[20];  /* Enough to hold "block@2147483648\n".  */
 
-      gfc_get_symbol ("block@", my_ns, &my_ns->proc_name);
+      snprintf(buffer, sizeof(buffer), "block@%d", numblock++);
+      gfc_get_symbol (buffer, my_ns, &my_ns->proc_name);
       t = gfc_add_flavor (&my_ns->proc_name->attr, FL_LABEL,
 			  my_ns->proc_name->name, NULL);
       gcc_assert (t == SUCCESS);