mirror of
https://github.com/Mercury-Language/mercury.git
synced 2025-12-17 14:57:03 +00:00
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.
70 lines
2.3 KiB
Mathematica
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.
|
|
%-----------------------------------------------------------------------------%
|