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