aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/IR/Module.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/IR/Module.cpp')
-rw-r--r--llvm/lib/IR/Module.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/llvm/lib/IR/Module.cpp b/llvm/lib/IR/Module.cpp
index 5861bbd..dba660b 100644
--- a/llvm/lib/IR/Module.cpp
+++ b/llvm/lib/IR/Module.cpp
@@ -631,6 +631,23 @@ void Module::setCodeModel(CodeModel::Model CL) {
addModuleFlag(ModFlagBehavior::Error, "Code Model", CL);
}
+std::optional<uint64_t> Module::getLargeDataThreshold() const {
+ auto *Val =
+ cast_or_null<ConstantAsMetadata>(getModuleFlag("Large Data Threshold"));
+
+ if (!Val)
+ return std::nullopt;
+
+ return cast<ConstantInt>(Val->getValue())->getZExtValue();
+}
+
+void Module::setLargeDataThreshold(uint64_t Threshold) {
+ // Since the large data threshold goes along with the code model, the merge
+ // behavior is the same.
+ addModuleFlag(ModFlagBehavior::Error, "Large Data Threshold",
+ ConstantInt::get(Type::getInt64Ty(Context), Threshold));
+}
+
void Module::setProfileSummary(Metadata *M, ProfileSummary::Kind Kind) {
if (Kind == ProfileSummary::PSK_CSInstr)
setModuleFlag(ModFlagBehavior::Error, "CSProfileSummary", M);