[m-rev.] [reuse] for review: files erronuously touched

Simon Taylor stayl at cs.mu.OZ.AU
Sat Aug 11 01:53:00 AEST 2001


On 10-Aug-2001, Nancy Mazur <Nancy.Mazur at cs.kuleuven.ac.be> wrote:
> Estimated hours taken: 1
> Branches: reuse
> 
> In combination with smart_recompilation, problems occurred as
> files were erronuously touched where they shouldn't. This problem 
> is caused by the fact that we delay the generation of the .trans_opt
> file till after stage 50 (as reuse analysis will only be done 
> by then). Normally it assumed that once after stage 50, 
> full compilation will be required, hence touching all the necessary
> files. 
> 
> mercury_compile.m:
> 	After stage 50, either check whether only the trans_opts
> 	need to be generated. If so, do so, if not, go on, and compile till 
> 	the end, including touching all possible files. 

This change stops the compiler touching the `.c_date' file when writing
the `.trans_opt' file, but the compiler will still be doing some other
things it shouldn't do when writing the `.trans_opt' file, for example
generating the profiling call graph and generating Aditi bytecode.

Given that all you really want is to make sure the middle (optimization)
passes are run before the `.trans_opt' file is written out, it would be
much simpler to put the call to mercury_compile__output_trans_opt_file
back where it is in the main branch compiler, and call
mercury_compile__middle_pass from there.

Simon.
 
--- mercury_compile.m.old	Sat Aug 11 01:46:06 2001
+++ mercury_compile.m	Sat Aug 11 01:46:38 2001
@@ -1000,6 +1000,9 @@
 	    ; { MakeOptInt = yes } ->
 		% only run up to typechecking when making the .opt file
 		[]
+	    ; { MakeTransOptInt = yes } ->
+		mercury_compile__middle_pass(ModuleName, HLDS21, HLDS50, _),
+	    	mercury_compile__output_trans_opt_file(HLDS50)
 	    ;
 		mercury_compile__maybe_output_prof_call_graph(HLDS21,
 			Verbose, Stats, HLDS25),
@@ -1029,9 +1032,6 @@
 				Verbose, MaybeRLFile),
 		    ( { AditiOnly = yes } ->
 			{ HLDS = HLDS50 }
-		    ; { MakeTransOptInt = yes } -> 
-			{ HLDS = HLDS50 },
-			mercury_compile__output_trans_opt_file(HLDS50)
 		    ; { Target = il } ->
 			{ HLDS = HLDS50 },
 			mercury_compile__mlds_backend(HLDS, MLDS),
--------------------------------------------------------------------------
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