This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[gfortran] Replace gfc_symtree in gfc_expr by gfc_symbol



Since I will touch some of the expression handling code for the artificial variable work, I thought I'd do something first which I had planned to do for a while: this patch replaces the gfc_symtree *symtree in gfc_expr by a gfc_symbol.


Why?
Most code that touches the symtree component of a gfc_expr, actually does that in this way: expr->symtree->n.sym, i.e. it only deals with the symbol, not caring about the symtree. And this seems right: the symtree is a subobject of the namespace and meant to hold all symbols, the gfc_expr only has to deal with a single symbol, but not with the surrounding namespace.


Along the way I also changed iterator_stack to hold a gfc_symbol instead of a gfc_symtree, because only the symbol is needed.

Built and tested on i686-pc-linux with no regressions. This touches a lot of (most) files, and mostly in a very straightforward manner (s/symtree->n.sym/symbol/), so I chose not to list every single affected function in the ChangeLog.

Statistics: 129 lines added, 157 removed.

- Tobi

2004-06-07 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de>

	* check.c, data.c, dependency.c, dump-parse-tree.c, intrinsic.c,
	io.c, match.c, primary.c, resolve.c, simplify.c, trans-array.c,
	trans-common.c, trans-expr.c, trans-intrinsic.c, trans-stmt.c:
	Use 'symbol' component of gfc_expr instead of 'symtree->n.sym'
	where appropriate.
	* array.c:  Same. Also use 'symbol' instead of 'symtree' in
	iterator_stack's.
	* expr.c (gfc_get_expression, gfc_build_conversion): Nullify
	'symbol' component instead of symtree component.
	(gfc_check_assign_symbol): Don't allocate a symtree.
	(ALL): Same as for the other files.
	* gfortran.h (gfc_expr): Replace component 'symtree' by
	component 'symbol'.
	(iterator_stack): Change component 'variable' from gfc_symtree
	to gfc_symbol.
	* interface.c (gfc_Extend_expr): No need to search through
	symtree any longer.
	(ALL): Same as for the other files.
	* module.c (mio_symtree_ref): Remove function and prototype.
	(mio_expr): Input/Output symbol instead of symtree.
	* trans-io.c (get_new_var_expr): No need to allocate symtree.
	(set_string): Same as in other files.


Attachment: sympatch.gz
Description: application/gzip


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]