Jlm
Loading...
Searching...
No Matches
jlm
llvm
ir
Linkage.cpp
Go to the documentation of this file.
1
/*
2
* Copyright 2018 Nico Reißmann <nico.reissmann@gmail.com>
3
* Copyright 2025 Håvard Krogstie <krogstie.havard@gmail.com>
4
* See COPYING for terms of redistribution.
5
*/
6
7
#include <
jlm/llvm/ir/Linkage.hpp
>
8
9
#include <stdexcept>
10
#include <string>
11
#include <unordered_map>
12
13
namespace
jlm::llvm
14
{
15
16
[[nodiscard]] std::string_view
17
linkageToString
(
const
Linkage
linkage)
18
{
19
static
std::unordered_map<Linkage, std::string_view> strings = {
20
{
Linkage::externalLinkage
,
"external_linkage"
},
21
{
Linkage::availableExternallyLinkage
,
"available_externally_linkage"
},
22
{
Linkage::linkOnceAnyLinkage
,
"link_once_any_linkage"
},
23
{
Linkage::linkOnceOdrLinkage
,
"link_once_odr_linkage"
},
24
{
Linkage::weakAnyLinkage
,
"weak_any_linkage"
},
25
{
Linkage::weakOdrLinkage
,
"weak_odr_linkage"
},
26
{
Linkage::appendingLinkage
,
"appending_linkage"
},
27
{
Linkage::internalLinkage
,
"internal_linkage"
},
28
{
Linkage::privateLinkage
,
"private_linkage"
},
29
{
Linkage::externalWeakLinkage
,
"external_weak_linkage"
},
30
{
Linkage::commonLinkage
,
"common_linkage"
}
31
};
32
33
if
(
const
auto
it = strings.find(linkage); it != strings.end())
34
return
it->second;
35
36
throw
std::logic_error(
37
"Unknown linkage type: "
38
+ std::to_string(
static_cast<
std::underlying_type_t<Linkage>
>
(linkage)));
39
}
40
41
Linkage
42
linkageFromString
(
const
std::string_view stringValue)
43
{
44
static
std::unordered_map<std::string_view, Linkage> linkages = {
45
{
"external_linkage"
,
Linkage::externalLinkage
},
46
{
"available_externally_linkage"
,
Linkage::availableExternallyLinkage
},
47
{
"link_once_any_linkage"
,
Linkage::linkOnceAnyLinkage
},
48
{
"link_once_odr_linkage"
,
Linkage::linkOnceOdrLinkage
},
49
{
"weak_any_linkage"
,
Linkage::weakAnyLinkage
},
50
{
"weak_odr_linkage"
,
Linkage::weakOdrLinkage
},
51
{
"appending_linkage"
,
Linkage::appendingLinkage
},
52
{
"internal_linkage"
,
Linkage::internalLinkage
},
53
{
"private_linkage"
,
Linkage::privateLinkage
},
54
{
"external_weak_linkage"
,
Linkage::externalWeakLinkage
},
55
{
"common_linkage"
,
Linkage::commonLinkage
}
56
};
57
58
if
(
const
auto
it = linkages.find(stringValue); it != linkages.end())
59
return
it->second;
60
61
throw
std::logic_error(
"Unknown linkage type: "
+ std::string(stringValue));
62
}
63
64
}
Linkage.hpp
jlm::llvm
Global memory state passed between functions.
Definition
IpGraphToLlvmConverter.cpp:40
jlm::llvm::linkageToString
std::string_view linkageToString(const Linkage linkage)
Definition
Linkage.cpp:17
jlm::llvm::Linkage
Linkage
Definition
Linkage.hpp:19
jlm::llvm::Linkage::linkOnceAnyLinkage
@ linkOnceAnyLinkage
jlm::llvm::Linkage::weakOdrLinkage
@ weakOdrLinkage
jlm::llvm::Linkage::privateLinkage
@ privateLinkage
jlm::llvm::Linkage::internalLinkage
@ internalLinkage
jlm::llvm::Linkage::externalLinkage
@ externalLinkage
jlm::llvm::Linkage::availableExternallyLinkage
@ availableExternallyLinkage
jlm::llvm::Linkage::weakAnyLinkage
@ weakAnyLinkage
jlm::llvm::Linkage::appendingLinkage
@ appendingLinkage
jlm::llvm::Linkage::commonLinkage
@ commonLinkage
jlm::llvm::Linkage::externalWeakLinkage
@ externalWeakLinkage
jlm::llvm::Linkage::linkOnceOdrLinkage
@ linkOnceOdrLinkage
jlm::llvm::linkageFromString
Linkage linkageFromString(const std::string_view stringValue)
Definition
Linkage.cpp:42
Generated by
1.9.8