[PATCH] D15003: Interface to attach maximum function count from PGO to module as module flags.

Xinliang David Li via llvm-commits llvm-commits at lists.llvm.org
Wed Dec 2 13:04:19 PST 2015


lgtm.

David

On Wed, Dec 2, 2015 at 1:03 PM, Easwaran Raman <eraman at google.com> wrote:
> eraman updated this revision to Diff 41661.
> eraman added a comment.
>
> Ran clang-format with the right options.
>
>
> Repository:
>   rL LLVM
>
> http://reviews.llvm.org/D15003
>
> Files:
>   include/llvm/IR/Module.h
>   lib/IR/Module.cpp
>
> Index: lib/IR/Module.cpp
> ===================================================================
> --- lib/IR/Module.cpp
> +++ lib/IR/Module.cpp
> @@ -491,3 +491,15 @@
>  void Module::setPICLevel(PICLevel::Level PL) {
>    addModuleFlag(ModFlagBehavior::Error, "PIC Level", PL);
>  }
> +
> +void Module::setMaximumFunctionCount(uint64_t Count) {
> +  addModuleFlag(ModFlagBehavior::Error, "MaxFunctionCount", Count);
> +}
> +
> +Optional<uint64_t> Module::getMaximumFunctionCount() {
> +  auto *Val =
> +      cast_or_null<ConstantAsMetadata>(getModuleFlag("MaxFunctionCount"));
> +  if (!Val)
> +    return None;
> +  return cast<ConstantInt>(Val->getValue())->getZExtValue();
> +}
> Index: include/llvm/IR/Module.h
> ===================================================================
> --- include/llvm/IR/Module.h
> +++ include/llvm/IR/Module.h
> @@ -15,6 +15,7 @@
>  #ifndef LLVM_IR_MODULE_H
>  #define LLVM_IR_MODULE_H
>
> +#include "llvm/ADT/Optional.h"
>  #include "llvm/ADT/iterator_range.h"
>  #include "llvm/IR/Comdat.h"
>  #include "llvm/IR/DataLayout.h"
> @@ -639,6 +640,16 @@
>    /// \brief Set the PIC level (small or large model)
>    void setPICLevel(PICLevel::Level PL);
>  /// @}
> +
> +  /// @name Utility functions for querying and setting PGO counts
> +  /// @{
> +
> +  /// \brief Set maximum function count in PGO mode
> +  void setMaximumFunctionCount(uint64_t);
> +
> +  /// \brief Returns maximum function count in PGO mode
> +  Optional<uint64_t> getMaximumFunctionCount();
> +  /// @}
>  };
>
>  /// An raw_ostream inserter for modules.
>
>


More information about the llvm-commits mailing list