let filter_if stmt (th, el as thel) =
  if th = Dataflow.GUnreachable || el = Dataflow.GUnreachable
  then thel
  else
    let sep = !mask in
    if sep <> 0 && 
      (      Value_parameters.SeparateStmtStart.is_empty() ||
          (Value_parameters.SeparateStmtStart.exists
              (fun s -> stmt.Cil_types.sid = int_of_string s)) )
    then begin
        mask := sep lsr 1;
        let c = 
          (pred (Value_parameters.SeparateStmtWord.get())) land sep <> 0 
        in
        Value_parameters.warning ~current:true 
          "Statement %d: only propagating for condition %B"
          stmt.Cil_types.sid
          c;
        if c
        then
          th, Dataflow.GUnreachable
        else
          Dataflow.GUnreachable, el
      end
    else thel