| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- ///////////////////////////////////////////////////////////////////////////////
- // //
- // ScopeNestedCFG.cpp //
- // Copyright (C) Microsoft Corporation. All rights reserved. //
- // This file is distributed under the University of Illinois Open Source //
- // License. See LICENSE.TXT for details. //
- // //
- // Pass that converts a reducible CFG into scope-nested CFG. //
- // The pass expects that the following passes have been run //
- // right before the pass is invoked: //
- // -simplifycfg //
- // -loop-simplify //
- // -reg2mem_hlsl //
- // //
- ///////////////////////////////////////////////////////////////////////////////
- #pragma once
- namespace llvm {
- class Module;
- class Function;
- class PassRegistry;
- class FunctionPass;
- llvm::FunctionPass *createScopeNestedCFGPass();
- void initializeScopeNestedCFGPass(llvm::PassRegistry&);
- llvm::FunctionPass *createLoopSimplifyFunctionPass();
- void initializeLoopSimplifyFunctionPass(llvm::PassRegistry&);
- enum class BranchKind {
- Invalid = 0,
- IfBegin,
- IfEnd,
- IfNoEnd,
- SwitchBegin,
- SwitchEnd,
- SwitchNoEnd,
- SwitchBreak,
- LoopBegin,
- LoopExit,
- LoopNoEnd,
- LoopBreak,
- LoopContinue,
- LoopBackEdge,
- };
- }
|