1//===- PromoteMemToReg.h - Promote Allocas to Scalars -----------*- 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 file exposes an interface to promote alloca instructions to SSA 11// registers, by using the SSA construction algorithm. 12// 13//===----------------------------------------------------------------------===// 14 15#ifndef TRANSFORMS_UTILS_PROMOTEMEMTOREG_H 16#define TRANSFORMS_UTILS_PROMOTEMEMTOREG_H 17 18#include <vector> 19 20namespace llvm { 21 22class AllocaInst; 23class DominatorTree; 24class AliasSetTracker; 25 26/// isAllocaPromotable - Return true if this alloca is legal for promotion. 27/// This is true if there are only loads and stores to the alloca... 28/// 29bool isAllocaPromotable(const AllocaInst *AI); 30 31/// PromoteMemToReg - Promote the specified list of alloca instructions into 32/// scalar registers, inserting PHI nodes as appropriate. This function makes 33/// use of DominanceFrontier information. This function does not modify the CFG 34/// of the function at all. All allocas must be from the same function. 35/// 36/// If AST is specified, the specified tracker is updated to reflect changes 37/// made to the IR. 38/// 39void PromoteMemToReg(const std::vector<AllocaInst*> &Allocas, 40 DominatorTree &DT, AliasSetTracker *AST = 0); 41 42} // End llvm namespace 43 44#endif 45