1 //===- CalledValuePropagation.h - Propagate called values -------*- 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 // 9 // This file implements a transformation that attaches !callees metadata to 10 // indirect call sites. For a given call site, the metadata, if present, 11 // indicates the set of functions the call site could possibly target at 12 // run-time. This metadata is added to indirect call sites when the set of 13 // possible targets can be determined by analysis and is known to be small. The 14 // analysis driving the transformation is similar to constant propagation and 15 // makes uses of the generic sparse propagation solver. 16 // 17 //===----------------------------------------------------------------------===// 18 19 #ifndef LLVM_TRANSFORMS_IPO_CALLEDVALUEPROPAGATION_H 20 #define LLVM_TRANSFORMS_IPO_CALLEDVALUEPROPAGATION_H 21 22 #include "llvm/IR/Module.h" 23 #include "llvm/IR/PassManager.h" 24 25 namespace llvm { 26 27 class CalledValuePropagationPass 28 : public PassInfoMixin<CalledValuePropagationPass> { 29 public: 30 PreservedAnalyses run(Module &M, ModuleAnalysisManager &); 31 }; 32 } // namespace llvm 33 34 #endif // LLVM_TRANSFORMS_IPO_CALLEDVALUEPROPAGATION_H 35