Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/llvm-project/llvm/lib/Transforms/Utils/InstructionNamer.cpp
35271 views
1
//===- InstructionNamer.cpp - Give anonymous instructions names -----------===//
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 is a little utility pass that gives instructions names, this is mostly
10
// useful when diffing the effect of an optimization because deleting an
11
// unnamed instruction can change all other instruction numbering, making the
12
// diff very noisy.
13
//
14
//===----------------------------------------------------------------------===//
15
16
#include "llvm/Transforms/Utils/InstructionNamer.h"
17
#include "llvm/IR/Function.h"
18
#include "llvm/IR/PassManager.h"
19
#include "llvm/IR/Type.h"
20
21
using namespace llvm;
22
23
namespace {
24
void nameInstructions(Function &F) {
25
for (auto &Arg : F.args()) {
26
if (!Arg.hasName())
27
Arg.setName("arg");
28
}
29
30
for (BasicBlock &BB : F) {
31
if (!BB.hasName())
32
BB.setName("bb");
33
34
for (Instruction &I : BB) {
35
if (!I.hasName() && !I.getType()->isVoidTy())
36
I.setName("i");
37
}
38
}
39
}
40
41
} // namespace
42
43
PreservedAnalyses InstructionNamerPass::run(Function &F,
44
FunctionAnalysisManager &FAM) {
45
nameInstructions(F);
46
return PreservedAnalyses::all();
47
}
48
49