1//===-- InferFunctionAttrs.h - Infer implicit function attributes ---------===//
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/// \file
11/// Interfaces for passes which infer implicit function attributes from the
12/// name and signature of function declarations.
13///
14//===----------------------------------------------------------------------===//
15
16#ifndef LLVM_TRANSFORMS_IPO_INFERFUNCTIONATTRS_H
17#define LLVM_TRANSFORMS_IPO_INFERFUNCTIONATTRS_H
18
19#include "llvm/IR/Module.h"
20#include "llvm/IR/PassManager.h"
21
22namespace llvm {
23
24/// A pass which infers function attributes from the names and signatures of
25/// function declarations in a module.
26struct InferFunctionAttrsPass : PassInfoMixin<InferFunctionAttrsPass> {
27 PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM);
28};
29
30/// Create a legacy pass manager instance of a pass to infer function
31/// attributes.
32Pass *createInferFunctionAttrsLegacyPass();
33
34}
35
36#endif // LLVM_TRANSFORMS_IPO_INFERFUNCTIONATTRS_H
37