Files
swift-mirror/SwiftCompilerSources/Sources/Optimizer/TestPasses/FunctionUsesDumper.swift
Erik Eckstein a12e33e9e9 Swift Optimizer: add the FunctionUses utility
Provides a list of instructions, which reference a function.

A function "use" is an instruction in another (or the same) function which references the function.
In most cases those are `function_ref` instructions, but can also be e.g. `keypath` instructions.

'FunctionUses' performs an analysis of all functions in the module and collects instructions which reference other functions.
This utility can be used to do inter-procedural caller-analysis.
2022-08-24 17:55:02 +02:00

29 lines
912 B
Swift

//===--- FunctionUsesDumper.swift -----------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2022 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
import SIL
let functionUsesDumper = ModulePass(name: "dump-function-uses", {
(context: ModulePassContext) in
var functionUses = FunctionUses()
functionUses.collect(context: context)
for function in context.functions {
let uses = functionUses.getUses(of: function)
print("Uses of \(function.name)")
print(uses)
print("End function \(function.name)\n")
}
})