llvm-6502/lib/Target/NVPTX/NVPTXAllocaHoisting.h
Chandler Carruth a1514e24cc Sort includes for all of the .h files under the 'lib' tree. These were
missed in the first pass because the script didn't yet handle include
guards.

Note that the script is now able to handle all of these headers without
manual edits. =]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169224 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-04 07:12:27 +00:00

50 lines
1.3 KiB
C++

//===-- AllocaHoisting.h - Hosist allocas to the entry block ----*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// Hoist the alloca instructions in the non-entry blocks to the entry blocks.
//
//===----------------------------------------------------------------------===//
#ifndef NVPTX_ALLOCA_HOISTING_H_
#define NVPTX_ALLOCA_HOISTING_H_
#include "llvm/CodeGen/MachineFunctionAnalysis.h"
#include "llvm/DataLayout.h"
#include "llvm/Pass.h"
namespace llvm {
class FunctionPass;
class Function;
// Hoisting the alloca instructions in the non-entry blocks to the entry
// block.
class NVPTXAllocaHoisting : public FunctionPass {
public:
static char ID; // Pass ID
NVPTXAllocaHoisting() : FunctionPass(ID) {}
void getAnalysisUsage(AnalysisUsage &AU) const {
AU.addRequired<DataLayout>();
AU.addPreserved<MachineFunctionAnalysis>();
}
virtual const char *getPassName() const {
return "NVPTX specific alloca hoisting";
}
virtual bool runOnFunction(Function &function);
};
extern FunctionPass *createAllocaHoisting();
} // end namespace llvm
#endif // NVPTX_ALLOCA_HOISTING_H_