diff options
| author | robot-piglet <[email protected]> | 2025-03-05 13:38:11 +0300 |
|---|---|---|
| committer | robot-piglet <[email protected]> | 2025-03-05 13:49:53 +0300 |
| commit | 9eed360f02de773a5ed2de5d2a3e81fc7f06acfa (patch) | |
| tree | 744a4054e64eb443073c7c6ad36b29cedcf9c2e6 /contrib/libs/llvm14/include/llvm/Analysis/CodeMetrics.h | |
| parent | c141a5c40bda2eed1a68b0626ffdae5fd19359a6 (diff) | |
Intermediate changes
commit_hash:2ec2671384dd8e604d41bc5c52c2f7858e4afea6
Diffstat (limited to 'contrib/libs/llvm14/include/llvm/Analysis/CodeMetrics.h')
| -rw-r--r-- | contrib/libs/llvm14/include/llvm/Analysis/CodeMetrics.h | 105 |
1 files changed, 0 insertions, 105 deletions
diff --git a/contrib/libs/llvm14/include/llvm/Analysis/CodeMetrics.h b/contrib/libs/llvm14/include/llvm/Analysis/CodeMetrics.h deleted file mode 100644 index c50218dc8bb..00000000000 --- a/contrib/libs/llvm14/include/llvm/Analysis/CodeMetrics.h +++ /dev/null @@ -1,105 +0,0 @@ -#pragma once - -#ifdef __GNUC__ -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" -#endif - -//===- CodeMetrics.h - Code cost measurements -------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -// -// This file implements various weight measurements for code, helping -// the Inliner and other passes decide whether to duplicate its contents. -// -//===----------------------------------------------------------------------===// - -#ifndef LLVM_ANALYSIS_CODEMETRICS_H -#define LLVM_ANALYSIS_CODEMETRICS_H - -#include "llvm/ADT/DenseMap.h" - -namespace llvm { -class AssumptionCache; -class BasicBlock; -class Loop; -class Function; -template <class T> class SmallPtrSetImpl; -class TargetTransformInfo; -class Value; - -/// Utility to calculate the size and a few similar metrics for a set -/// of basic blocks. -struct CodeMetrics { - /// True if this function contains a call to setjmp or other functions - /// with attribute "returns twice" without having the attribute itself. - bool exposesReturnsTwice = false; - - /// True if this function calls itself. - bool isRecursive = false; - - /// True if this function cannot be duplicated. - /// - /// True if this function contains one or more indirect branches, or it contains - /// one or more 'noduplicate' instructions. - bool notDuplicatable = false; - - /// True if this function contains a call to a convergent function. - bool convergent = false; - - /// True if this function calls alloca (in the C sense). - bool usesDynamicAlloca = false; - - /// Number of instructions in the analyzed blocks. - unsigned NumInsts = false; - - /// Number of analyzed blocks. - unsigned NumBlocks = false; - - /// Keeps track of basic block code size estimates. - DenseMap<const BasicBlock *, unsigned> NumBBInsts; - - /// Keep track of the number of calls to 'big' functions. - unsigned NumCalls = false; - - /// The number of calls to internal functions with a single caller. - /// - /// These are likely targets for future inlining, likely exposed by - /// interleaved devirtualization. - unsigned NumInlineCandidates = 0; - - /// How many instructions produce vector values. - /// - /// The inliner is more aggressive with inlining vector kernels. - unsigned NumVectorInsts = 0; - - /// How many 'ret' instructions the blocks contain. - unsigned NumRets = 0; - - /// Add information about a block to the current state. - void analyzeBasicBlock(const BasicBlock *BB, const TargetTransformInfo &TTI, - const SmallPtrSetImpl<const Value *> &EphValues, - bool PrepareForLTO = false); - - /// Collect a loop's ephemeral values (those used only by an assume - /// or similar intrinsics in the loop). - static void collectEphemeralValues(const Loop *L, AssumptionCache *AC, - SmallPtrSetImpl<const Value *> &EphValues); - - /// Collect a functions's ephemeral values (those used only by an - /// assume or similar intrinsics in the function). - static void collectEphemeralValues(const Function *L, AssumptionCache *AC, - SmallPtrSetImpl<const Value *> &EphValues); -}; - -} - -#endif - -#ifdef __GNUC__ -#pragma GCC diagnostic pop -#endif |
