Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. //===- LowerExpectIntrinsic.h - LowerExpectIntrinsic pass -------*- C++ -*-===//
  2. //
  3. // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
  4. // See https://llvm.org/LICENSE.txt for license information.
  5. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  6. //
  7. //===----------------------------------------------------------------------===//
  8. /// \file
  9. ///
  10. /// The header file for the LowerExpectIntrinsic pass as used by the new pass
  11. /// manager.
  12. ///
  13. //===----------------------------------------------------------------------===//
  14.  
  15. #ifndef LLVM_TRANSFORMS_SCALAR_LOWEREXPECTINTRINSIC_H
  16. #define LLVM_TRANSFORMS_SCALAR_LOWEREXPECTINTRINSIC_H
  17.  
  18. #include "llvm/IR/PassManager.h"
  19.  
  20. namespace llvm {
  21.  
  22. class Function;
  23.  
  24. struct LowerExpectIntrinsicPass : PassInfoMixin<LowerExpectIntrinsicPass> {
  25.   /// Run the pass over the function.
  26.   ///
  27.   /// This will lower all of the expect intrinsic calls in this function into
  28.   /// branch weight metadata. That metadata will subsequently feed the analysis
  29.   /// of the probabilities and frequencies of the CFG. After running this pass,
  30.   /// no more expect intrinsics remain, allowing the rest of the optimizer to
  31.   /// ignore them.
  32.   PreservedAnalyses run(Function &F, FunctionAnalysisManager &);
  33. };
  34.  
  35. }
  36.  
  37. #endif
  38.