com.c (ffecom_push_tempvar): Replace kludge that munged back-end globals directly...
authorCraig Burley <burley@gnu.org>
Mon, 13 Jul 1998 12:11:43 +0000 (08:11 -0400)
committerDave Love <fx@gcc.gnu.org>
Mon, 13 Jul 1998 12:11:43 +0000 (12:11 +0000)
Mon Jul 13 11:54:03 1998  Craig Burley  <burley@gnu.org>
* com.c (ffecom_push_tempvar): Replace kludge that
munged back-end globals directly with proper calls
to push_topmost_sequence and pop_topmost_sequence.

From-SVN: r21105

gcc/f/ChangeLog
gcc/f/com.c

index c53f10df8e5a0e85069a4cb63bf26675d2f2020a..0581add690e8519b8c41589e305209be09a996aa 100644 (file)
@@ -1,3 +1,9 @@
+Mon Jul 13 11:54:03 1998  Craig Burley  <burley@gnu.org>
+
+       * com.c (ffecom_push_tempvar): Replace kludge that
+       munged back-end globals directly with proper calls
+       to push_topmost_sequence and pop_topmost_sequence.
+
 1998-07-12  Dave Love  <d.love@dl.ac.uk>
 
        * version.c: Bump version.
index 17993a9b7c5eb12db264bde0d0c88750b9e91d60..6481642467392add79da214c061da0301ca650f1 100644 (file)
@@ -13394,18 +13394,19 @@ ffecom_push_tempvar (tree type, ffetargetCharacterSize size, int elements,
                  ffecom_get_invented_identifier ("__g77_expr_%d", NULL,
                                                  mynumber++),
                  type);
-  {    /* ~~~~ kludge alert here!!! else temp gets reused outside
-          a compound-statement sequence.... */
-    extern tree sequence_rtl_expr;
-    tree back_end_bug = sequence_rtl_expr;
 
-    sequence_rtl_expr = NULL_TREE;
+  /* This temp must be put in the same scope as the containing BLOCK
+     (aka function), but for reasons that should be explained elsewhere,
+     the GBE normally decides it should be in a "phantom BLOCK" associated
+     with the expand_start_stmt_expr() call.  So push the topmost
+     sequence back onto the GBE's internal stack before telling it
+     about the decl, then restore it afterwards.  */
+  push_topmost_sequence ();
 
-    t = start_decl (t, FALSE);
-    finish_decl (t, NULL_TREE, FALSE);
+  t = start_decl (t, FALSE);
+  finish_decl (t, NULL_TREE, FALSE);
 
-    sequence_rtl_expr = back_end_bug;
-  }
+  pop_topmost_sequence ();
 
   resume_momentary (yes);