aboutsummaryrefslogtreecommitdiff
path: root/contrib/llvm-project/llvm/lib/IR/Module.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/llvm-project/llvm/lib/IR/Module.cpp')
-rw-r--r--contrib/llvm-project/llvm/lib/IR/Module.cpp33
1 files changed, 24 insertions, 9 deletions
diff --git a/contrib/llvm-project/llvm/lib/IR/Module.cpp b/contrib/llvm-project/llvm/lib/IR/Module.cpp
index 4974b372db2a..5cd74d53da75 100644
--- a/contrib/llvm-project/llvm/lib/IR/Module.cpp
+++ b/contrib/llvm-project/llvm/lib/IR/Module.cpp
@@ -71,8 +71,7 @@ template class llvm::SymbolTableListTraits<GlobalIFunc>;
Module::Module(StringRef MID, LLVMContext &C)
: Context(C), ValSymTab(std::make_unique<ValueSymbolTable>(-1)),
- Materializer(), ModuleID(std::string(MID)),
- SourceFileName(std::string(MID)), DL("") {
+ ModuleID(std::string(MID)), SourceFileName(std::string(MID)), DL("") {
Context.addModule(this);
}
@@ -671,12 +670,15 @@ void Module::setRtLibUseGOT() {
addModuleFlag(ModFlagBehavior::Max, "RtLibUseGOT", 1);
}
-bool Module::getUwtable() const {
- auto *Val = cast_or_null<ConstantAsMetadata>(getModuleFlag("uwtable"));
- return Val && (cast<ConstantInt>(Val->getValue())->getZExtValue() > 0);
+UWTableKind Module::getUwtable() const {
+ if (auto *Val = cast_or_null<ConstantAsMetadata>(getModuleFlag("uwtable")))
+ return UWTableKind(cast<ConstantInt>(Val->getValue())->getZExtValue());
+ return UWTableKind::None;
}
-void Module::setUwtable() { addModuleFlag(ModFlagBehavior::Max, "uwtable", 1); }
+void Module::setUwtable(UWTableKind Kind) {
+ addModuleFlag(ModFlagBehavior::Max, "uwtable", uint32_t(Kind));
+}
FramePointerKind Module::getFramePointer() const {
auto *Val = cast_or_null<ConstantAsMetadata>(getModuleFlag("frame-pointer"));
@@ -734,7 +736,7 @@ void Module::setOverrideStackAlignment(unsigned Align) {
addModuleFlag(ModFlagBehavior::Error, "override-stack-alignment", Align);
}
-void Module::setSDKVersion(const VersionTuple &V) {
+static void addSDKVersionMD(const VersionTuple &V, Module &M, StringRef Name) {
SmallVector<unsigned, 3> Entries;
Entries.push_back(V.getMajor());
if (auto Minor = V.getMinor()) {
@@ -744,8 +746,12 @@ void Module::setSDKVersion(const VersionTuple &V) {
// Ignore the 'build' component as it can't be represented in the object
// file.
}
- addModuleFlag(ModFlagBehavior::Warning, "SDK Version",
- ConstantDataArray::get(Context, Entries));
+ M.addModuleFlag(Module::ModFlagBehavior::Warning, Name,
+ ConstantDataArray::get(M.getContext(), Entries));
+}
+
+void Module::setSDKVersion(const VersionTuple &V) {
+ addSDKVersionMD(V, *this, "SDK Version");
}
static VersionTuple getSDKVersionMD(Metadata *MD) {
@@ -818,6 +824,15 @@ StringRef Module::getDarwinTargetVariantTriple() const {
return "";
}
+void Module::setDarwinTargetVariantTriple(StringRef T) {
+ addModuleFlag(ModFlagBehavior::Override, "darwin.target_variant.triple",
+ MDString::get(getContext(), T));
+}
+
VersionTuple Module::getDarwinTargetVariantSDKVersion() const {
return getSDKVersionMD(getModuleFlag("darwin.target_variant.SDK Version"));
}
+
+void Module::setDarwinTargetVariantSDKVersion(VersionTuple Version) {
+ addSDKVersionMD(Version, *this, "darwin.target_variant.SDK Version");
+}