1 //===-- Transform/Utils/FunctionUtils.h - Function Utils --------*- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 // 10 // This family of transformations manipulate LLVM functions. 11 // 12 //===----------------------------------------------------------------------===// 13 14 #ifndef LLVM_TRANSFORMS_UTILS_FUNCTION_H 15 #define LLVM_TRANSFORMS_UTILS_FUNCTION_H 16 17 #include <vector> 18 19 namespace llvm { 20 class BasicBlock; 21 class DominatorTree; 22 class Function; 23 class Loop; 24 25 /// ExtractCodeRegion - rip out a sequence of basic blocks into a new function 26 /// 27 Function* ExtractCodeRegion(DominatorTree& DT, 28 const std::vector<BasicBlock*> &code, 29 bool AggregateArgs = false); 30 31 /// ExtractLoop - rip out a natural loop into a new function 32 /// 33 Function* ExtractLoop(DominatorTree& DT, Loop *L, 34 bool AggregateArgs = false); 35 36 /// ExtractBasicBlock - rip out a basic block into a new function 37 /// 38 Function* ExtractBasicBlock(BasicBlock *BB, bool AggregateArgs = false); 39 } 40 41 #endif 42