[m-rev.] [reuse] diff: transitively read in .trans_opt files
Peter Ross
peter.ross at miscrit.be
Tue Mar 20 22:15:41 AEDT 2001
Hi,
===================================================================
Estimated hours taken: 1
Branches: reuse
compiler/trans_opt.m:
Output a use_module declaration so that we can transitively read in
the .trans_opt files.
Transitively read in all the .trans_opt files, so that we have
access to all the aliasing information.
Index: trans_opt.m
===================================================================
RCS file: /home/mercury1/repository/mercury/compiler/trans_opt.m,v
retrieving revision 1.15.4.5
diff -u -r1.15.4.5 trans_opt.m
--- trans_opt.m 2000/11/21 10:35:45 1.15.4.5
+++ trans_opt.m 2001/03/20 11:13:20
@@ -111,6 +111,20 @@
mercury_output_bracketed_sym_name(ModName),
io__write_string(".\n"),
+ { module_info_get_imported_module_specifiers(Module,
+ Modules0) },
+ { set__to_sorted_list(Modules0, Modules) },
+ ( { Modules \= [] } ->
+ % XXX this could be reduced to the set that is
+ % actually needed by the items being written.
+ io__write_string(":- use_module "),
+ io__write_list(Modules, ",",
+ mercury_output_bracketed_sym_name),
+ io__write_string(".")
+ ;
+ []
+ ),
+
% All predicates to write global items into the .trans_opt
% file should go here.
{ module_info_predids(Module, PredIds) },
@@ -184,7 +198,7 @@
globals__io_lookup_bool_option(verbose, Verbose),
maybe_write_string(Verbose, "% Reading .trans_opt files..\n"),
maybe_flush_output(Verbose),
- read_trans_opt_files(TransOptDeps, [], OptItems, no, FoundError),
+ read_trans_opt_files(TransOptDeps, [], [], OptItems, no, FoundError),
{ append_pseudo_decl(Module0, opt_imported, Module1) },
{ module_imports_get_items(Module1, Items0) },
@@ -194,13 +208,14 @@
maybe_write_string(Verbose, "% Done.\n").
-:- pred read_trans_opt_files(list(module_name), item_list,
+:- pred read_trans_opt_files(list(module_name), list(module_name), item_list,
item_list, bool, bool, io__state, io__state).
-:- mode read_trans_opt_files(in, in, out, in, out, di, uo) is det.
+:- mode read_trans_opt_files(in, in, in, out, in, out, di, uo) is det.
-read_trans_opt_files([], Items, Items, Error, Error) --> [].
-read_trans_opt_files([Import | Imports],
+read_trans_opt_files([], _, Items, Items, Error, Error) --> [].
+read_trans_opt_files(OptFilesToRead, AlreadyReadOptFiles,
Items0, Items, Error0, Error) -->
+ { OptFilesToRead = [Import | Imports] },
globals__io_lookup_bool_option(very_verbose, VeryVerbose),
maybe_write_string(VeryVerbose,
"% Reading transitive optimization interface for module"),
@@ -212,13 +227,27 @@
module_name_to_file_name(Import, ".trans_opt", no, FileName),
prog_io__read_opt_file(FileName, Import, yes,
- ModuleError, Messages, Items1),
+ ModuleError, Messages, OptItems),
+
+ % Get the rest of the trans_opt files to be read.
+ { get_dependencies(OptItems, NewImportDeps0, NewUseDeps0) },
+ globals__io_get_globals(Globals),
+ { get_implicit_dependencies(OptItems, Globals,
+ NewImplicitImportDeps0, NewImplicitUseDeps0) },
+ { NewDeps0 = list__condense([NewImportDeps0, NewUseDeps0,
+ NewImplicitImportDeps0, NewImplicitUseDeps0]) },
+ { set__list_to_set(NewDeps0, NewDepsSet0) },
+ { set__delete_list(NewDepsSet0,
+ OptFilesToRead ++ AlreadyReadOptFiles, NewDepsSet) },
+ { set__to_sorted_list(NewDepsSet, NewDeps) },
maybe_write_string(VeryVerbose, " done.\n"),
intermod__update_error_status(trans_opt, FileName, ModuleError,
Messages, Error0, Error1),
- { list__append(Items0, Items1, Items2) },
- read_trans_opt_files(Imports, Items2, Items, Error1, Error).
+ { list__append(Items0, OptItems, Items2) },
+ read_trans_opt_files(NewDeps ++ Imports,
+ [Import | AlreadyReadOptFiles],
+ Items2, Items, Error1, Error).
--------------------------------------------------------------------------
mercury-reviews mailing list
post: mercury-reviews at cs.mu.oz.au
administrative address: owner-mercury-reviews at cs.mu.oz.au
unsubscribe: Address: mercury-reviews-request at cs.mu.oz.au Message: unsubscribe
subscribe: Address: mercury-reviews-request at cs.mu.oz.au Message: subscribe
--------------------------------------------------------------------------
More information about the reviews
mailing list