com.c (ffecom_push_tempvar): Replace kludge that munged back-end globals directly with proper calls to...

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
This commit is contained in:
Craig Burley 1998-07-13 08:11:43 -04:00 committed by Dave Love
parent 4d1a91c2bf
commit 6bf7163510
2 changed files with 16 additions and 9 deletions

View 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.

View 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);