Files
mercury/compiler/parse_tree.m
Nancy Mazur 80cf6ed8a6 Implementation of the structure sharing analysis (part of the CTGC system).
Estimated hours taken: 120
Branches: main

Implementation of the structure sharing analysis (part of the CTGC system).

compiler/ctgc.datastruct.m:
	(new file) Manipulation of a datastruct (defined in prog_data.m)

compiler/ctgc.selector.m:
	(new file) Manipulation of a selector (defined in prog_data.m)

compiler/ctgc.fixpoint_table.m:
	(new file) Definition of a generic fixpoint table to be used by the
	structure sharing analysis framework as well as the structure reuse
	part.

compiler/ctgc.util.m:
	(new file) General operations valid for both structure sharing
	analysis as structure reuse analysis.

compiler/ctgc.m:
	Included additional modules.

compiler/structure_sharing.analysis.m:
compiler/structure_sharing.domain.m:
compiler/structure_sharing.m:
	Structure sharing analysis and domain.

compiler/add_pragma.m:
compiler/make_hlds_passes.m:
compiler/mercury_to_mercury.m:
compiler/module_qual.m:
compiler/modules.m:
compiler/prog_io_pragma.m:
compiler/prog_item.m:
compiler/recompilation.version.m:
compiler/trans_opt.m:
	Added structure_sharing pragma and ways to handle it.

compiler/handle_options.m:
	- Structure sharing analysis implies transitive optimization.
	- Added character "S" to be used to dump structure sharing related
	information in the hlds_dump-files.

compiler/hlds_out.m:
	Dump structure sharing information.

compiler/hlds_pred.m:
	Store structure sharing information in proc_info.

compiler/mercury_compile.m:
	Perform structure sharing when creating .opt, .trans-opt files, and
	when compiling to c.

compiler/options.m:
	New options: structure-sharing and structure-sharing-widening.

compiler/parse_tree.m:
compiler/prog_ctgc.m:
	(new file) This module contains printing/parsing and renaming
	routines for handling the public representation used for
	structure sharing information.

compiler/prog_data.m:
	Public representation for structure sharing information.
2006-02-22 08:05:17 +00:00

70 lines
2.3 KiB
Mathematica

%-----------------------------------------------------------------------------%
% vim: ft=mercury ts=4 sw=4 et
%-----------------------------------------------------------------------------%
% Copyright (C) 2002-2005 The University of Melbourne.
% This file may only be copied under the terms of the GNU General
% Public License - see the file COPYING in the Mercury distribution.
%-----------------------------------------------------------------------------%
%
% This package contains the parse tree data structure,
% and modules for parsing and for manipulating parse trees.
%
% It corresponds to the parts of "Phase 1: Parsing"
% in notes/compiler_design.html up to (but not including) make_hlds.m.
%
:- module parse_tree.
:- interface.
:- import_module libs.
:- import_module mdbcomp.
:- import_module recompilation.
% The parse tree data type itself.
% The parse tree is split in two. The parts defined in prog_item is
% only needed in the frontend of the compiler, the parts in prog_data
% are needed throughout.
:- include_module prog_item.
:- include_module prog_data.
% The parser.
:- include_module prog_io.
:- include_module prog_io_dcg.
:- include_module prog_io_goal.
:- include_module prog_io_pragma.
:- include_module prog_io_typeclass.
:- include_module prog_io_util.
% Parser/pretty-printer/utility routines for the ctgc related types.
:- include_module prog_ctgc.
% Pretty-printers.
:- include_module mercury_to_mercury.
:- include_module prog_out.
% Utility routines.
:- include_module prog_foreign.
:- include_module prog_mode.
:- include_module prog_mutable.
:- include_module prog_util.
:- include_module prog_type.
:- include_module prog_type_subst.
:- include_module error_util.
% Transformations that act on the parse tree,
% and stuff relating to the module system.
:- include_module equiv_type.
:- include_module modules.
:- include_module module_qual.
:- include_module source_file_map.
% (Note that intermod and trans_opt also contain routines that
% act on the parse tree, but those modules are considered part
% of the HLDS transformations package.)
% :- include_module intermod.
% :- include_module trans_opt.
%-----------------------------------------------------------------------------%
:- end_module parse_tree.
%-----------------------------------------------------------------------------%