1292915Sdim//===-- InferFunctionAttrs.h - Infer implicit function attributes ---------===// 2292915Sdim// 3292915Sdim// The LLVM Compiler Infrastructure 4292915Sdim// 5292915Sdim// This file is distributed under the University of Illinois Open Source 6292915Sdim// License. See LICENSE.TXT for details. 7292915Sdim// 8292915Sdim//===----------------------------------------------------------------------===// 9292915Sdim/// 10292915Sdim/// \file 11292915Sdim/// Interfaces for passes which infer implicit function attributes from the 12292915Sdim/// name and signature of function declarations. 13292915Sdim/// 14292915Sdim//===----------------------------------------------------------------------===// 15292915Sdim 16292915Sdim#ifndef LLVM_TRANSFORMS_IPO_INFERFUNCTIONATTRS_H 17292915Sdim#define LLVM_TRANSFORMS_IPO_INFERFUNCTIONATTRS_H 18292915Sdim 19292915Sdim#include "llvm/IR/Module.h" 20292915Sdim#include "llvm/IR/PassManager.h" 21292915Sdim 22292915Sdimnamespace llvm { 23292915Sdim 24292915Sdim/// A pass which infers function attributes from the names and signatures of 25292915Sdim/// function declarations in a module. 26292915Sdimclass InferFunctionAttrsPass { 27292915Sdimpublic: 28292915Sdim static StringRef name() { return "InferFunctionAttrsPass"; } 29292915Sdim PreservedAnalyses run(Module &M, AnalysisManager<Module> *AM); 30292915Sdim}; 31292915Sdim 32292915Sdim/// Create a legacy pass manager instance of a pass to infer function 33292915Sdim/// attributes. 34292915SdimPass *createInferFunctionAttrsLegacyPass(); 35292915Sdim 36292915Sdim} 37292915Sdim 38292915Sdim#endif // LLVM_TRANSFORMS_IPO_INFERFUNCTIONATTRS_H 39