anchor.diff:  
   if_fail(L, St) ->
       Cv = c_var(omega),
  -    fail_clause([Cv], c_atom(if_clause), L, St).
  -
  -%% fail_clause(Pats, Arg, L, State) -> Clause.
  -%% Build a general failure clause.
  -
  -fail_clause(Pats, Arg, L, _) ->
  +    fail_clause([Cv], c_atom(if_clause), [], L, St).
  +
  +%% fail_clause(Pats, Arg, FailAnno, Line, State) -> Clause.
  +%%  Build a general failure clause. No line number in the clause, but
  +%%  append the line number and file name to the annotation.
  +
  +fail_clause(Pats, Arg, Fann, L, #cg{file=F}) ->
  +    Ann = [L,{file,F}],
       c_clause(Pats, c_atom(true),
  -             c_primop(c_atom(match_fail), [Arg], [L]),
  -             [L,compiler_generated]).           %It is compiler generated
  +             c_primop(c_atom(match_fail), [Arg], Fann ++ Ann),
  +             [compiler_generated]).             %It is compiler generated
   
   %% comp_case(Expr, Clauses, Env, Line, State) -> {#c_case{},State}.
   %% Compile a case.
  
positive.code: 
  try_case_fail(L, St) ->
      Cv = c_var(omega),
      fail_clause([Cv], c_tuple([c_atom(try_clause),Cv]), L, St).
  
  %% try_exception(CatchClauses, Env, L, State) -> {Vars,#c_case{},State}.
  
  
negative.code:              atts=[],                           %Attrubutes
               defs=[],                           %Function definitions.
               env=[],                            %Environment
               anno=[],                           %Current annotation
               opts=[],                           %Options
               file=[],                           %File name
               func=[],                           %Current function
               line=0,                            %Current line
               vc=0,                              %Variable counter
               fc=0                               %Function counter
              }).
  