1//===- LowerExpectIntrinsic.h - LowerExpectIntrinsic pass -------*- 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/// \file 10/// 11/// The header file for the LowerExpectIntrinsic pass as used by the new pass 12/// manager. 13/// 14//===----------------------------------------------------------------------===// 15 16#ifndef LLVM_TRANSFORMS_SCALAR_LOWEREXPECTINTRINSIC_H 17#define LLVM_TRANSFORMS_SCALAR_LOWEREXPECTINTRINSIC_H 18 19#include "llvm/IR/Function.h" 20#include "llvm/IR/PassManager.h" 21 22namespace llvm { 23 24class LowerExpectIntrinsicPass { 25public: 26 static StringRef name() { return "LowerExpectIntrinsicPass"; } 27 28 /// \brief Run the pass over the function. 29 /// 30 /// This will lower all of th expect intrinsic calls in this function into 31 /// branch weight metadata. That metadata will subsequently feed the analysis 32 /// of the probabilities and frequencies of the CFG. After running this pass, 33 /// no more expect intrinsics remain, allowing the rest of the optimizer to 34 /// ignore them. 35 PreservedAnalyses run(Function &F); 36}; 37 38} 39 40#endif 41