anchor.diff:  
   -spec expand_options(comp_options(), hipe_architecture()) -> comp_options().
   
  -expand_options(Opts, TargetArch) ->
  +expand_options(Opts0, TargetArch) ->
  +  Opts1 = proplists:normalize(Opts0, [{aliases, opt_aliases()}]),
  +  Opts = normalise_opt_options(Opts1),
     proplists:normalize(Opts, [{negations, opt_negations()},
  -			     {aliases, opt_aliases()},
   			     {expand, opt_basic_expansions()},
   			     {expand, opt_expansions(TargetArch)},
   			     {negations, opt_negations()}]).
  +
  +normalise_opt_options([o0|Opts]) -> [o0] ++ (Opts -- [o0, o1, o2, o3]);
  +normalise_opt_options([o1|Opts]) -> [o1] ++ (Opts -- [o0, o1, o2, o3]);
  +normalise_opt_options([o2|Opts]) -> [o2] ++ (Opts -- [o0, o1, o2, o3]);
  +normalise_opt_options([o3|Opts]) -> [o3] ++ (Opts -- [o0, o1, o2, o3]);
  +normalise_opt_options([O|Opts]) -> [O|normalise_opt_options(Opts)];
  +normalise_opt_options([]) -> [].
   
   -spec check_options(comp_options()) -> 'ok'.
   
  
positive.code:   [{pp_all, [pp_beam, pp_icode, pp_rtl, pp_native]}].
  
  opt_expansions(TargetArch) ->
    [{o1, o1_opts(TargetArch)},
     {o2, o2_opts(TargetArch)},
     {o3, o3_opts(TargetArch)},
     {to_llvm, llvm_opts(o3, TargetArch)},
  
negative.code: 	    "   pp_x86 = pp_native,\n" ++
  	    "   pp_amd64 = pp_native,\n" ++
  	    "   pp_ppc = pp_native,\n" ++
  	    "   o0 = ~p,\n" ++
  	    "   o1 = ~p ++ o0,\n" ++
  	    "   o2 = ~p ++ o1,\n" ++
  	    "   o3 = ~p ++ o2.\n",
  	    [ordsets:from_list([verbose, debug, time, load, pp_beam,
  				pp_icode, pp_rtl, pp_native, pp_asm,
  				timeout]),
  	     expand_options([pp_all], HostArch),
  	     O0 -- [o0],
  	     (O1 -- O0) -- [o1],
  	     (O2 -- O1) -- [o2],
  	     (O3 -- O2) -- [o3]]),
    ok.
  