blob: 7fa001ff3a0f88072b08c51145da1ef08c6e196c [file] [log] [blame] [edit]
///////////////////////////////////////////////////////////////////////////////
// //
// ReducibilityAnalysis.h //
// Copyright (C) Microsoft Corporation. All rights reserved. //
// This file is distributed under the University of Illinois Open Source //
// License. See LICENSE.TXT for details. //
// //
// Implements reducibility analysis pass. //
// //
///////////////////////////////////////////////////////////////////////////////
#pragma once
namespace llvm {
class Module;
class Function;
class PassRegistry;
class FunctionPass;
enum class IrreducibilityAction {
ThrowException,
PrintLog,
Ignore,
};
extern char &ReducibilityAnalysisID;
llvm::FunctionPass *createReducibilityAnalysisPass(
IrreducibilityAction Action = IrreducibilityAction::ThrowException);
void initializeReducibilityAnalysisPass(llvm::PassRegistry &);
bool IsReducible(
const llvm::Module &M,
IrreducibilityAction Action = IrreducibilityAction::ThrowException);
bool IsReducible(
const llvm::Function &F,
IrreducibilityAction Action = IrreducibilityAction::ThrowException);
} // namespace llvm