blob: 432969e94cd70df2f80627fbb6023038c9d62bc2 [file] [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);
}