// Copyright (c) 2020, the R8 project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

package com.android.tools.r8.ir.analysis.framework.intraprocedural;

import com.android.tools.r8.ir.code.BasicBlock;
import com.android.tools.r8.ir.code.Instruction;

/**
 * A transfer function that defines the abstract semantics of the instructions in the program
 * according to some abstract state {@link StateType}.
 */
public interface AbstractTransferFunction<StateType extends AbstractState<StateType>> {

  TransferFunctionResult<StateType> apply(Instruction instruction, StateType state);

  default StateType computeBlockEntryState(
      BasicBlock block, BasicBlock predecessor, StateType predecessorExitState) {
    return predecessorExitState;
  }
}
