anchor.diff:  -spec noenv_output_generated([option()]) -> boolean().
   
   noenv_output_generated(Opts) ->
  +    {_,Passes} = passes(file, expand_opts(Opts)),
       any(fun ({save_binary,_F}) -> true;
   	    (_Other) -> false
  -	end, passes(file, expand_opts(Opts))).
  +	end, Passes).
   
   %%
   %%  Local functions
  
positive.code: 		      end}.
  
  internal({forms,Forms}, Opts) ->
      Ps = passes(forms, Opts),
      internal_comp(Ps, "", "", #compile{code=Forms,options=Opts});
  internal({file,File}, Opts) ->
      Ps = passes(file, Opts),
      Compile = #compile{options=Opts},
      case member(from_core, Opts) of
  	true -> internal_comp(Ps, File, ".core", Compile);
  	false ->
  	    case member(from_beam, Opts) of
  		true ->
  		    internal_comp(Ps, File, ".beam", Compile);
  		false ->
  		    case member(from_asm, Opts) orelse member(asm, Opts) of
  			true ->
  			    internal_comp(Ps, File, ".S", Compile);
  			false ->
  			    internal_comp(Ps, File, ".erl", Compile)
  		    end
  	    end
      end.
  
  internal_comp(Passes, File, Suffix, St0) ->
      Dir = filename:dirname(File),
  
negative.code:     [{File,[M || {F,M} <- Ms, F =:= File]} ||
  	File <- lists:usort([F || {F,_} <- Ms])].
  
  %% passes(forms|file, [Option]) -> {Extension,[{Name,PassFun}]}
  %%  Figure out the extension of the input file and which passes
  %%  that need to be run.
  
  passes(Type, Opts) ->
      {Ext,Passes0} = passes_1(Opts),
      Passes1 = case Type of
  		  file -> Passes0;
  		  forms -> tl(Passes0)
  	      end,
      Passes = select_passes(Passes1, Opts),
  
      %% If the last pass saves the resulting binary to a file,
      %% insert a first pass to remove the file (unless the
      %% source file is a BEAM file).
      {Ext,case last(Passes) of
  	     {save_binary,_Fun} ->
  		 case Passes of
  		     [{read_beam_file,_}|_] ->
  			 %% The BEAM is both input and output.
  			 %% Don't remove it.
  			 Passes;
  		     _ ->
  			 [?pass(remove_file)|Passes]
  		 end;
  	     _ ->
  		 Passes
  	 end}.
  
  passes_1([Opt|Opts]) ->
      case pass(Opt) of
  	{_,_}=Res -> Res;
  	none -> passes_1(Opts)
      end;
  passes_1([]) ->
      {".erl",[?pass(parse_module)|standard_passes()]}.
  
  pass(from_core) ->
      {".core",[?pass(parse_core)|core_passes()]};
  pass(from_asm) ->
      {".S",[?pass(beam_consult_asm)|asm_passes()]};
  pass(asm) ->
      pass(from_asm);
  pass(from_beam) ->
      {".beam",[?pass(read_beam_file)|binary_passes()]};
  pass(_) -> none.
  
  %% select_passes([Command], Opts) -> [{Name,Function}]
  %%  Interpret the lists of commands to return a pure list of passes.
  