diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2021-06-13 19:31:46 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2021-06-13 19:37:19 +0000 |
commit | e8d8bef961a50d4dc22501cde4fb9fb0be1b2532 (patch) | |
tree | 94f04805f47bb7c59ae29690d8952b6074fff602 /contrib/llvm-project/llvm/lib/IR/MDBuilder.cpp | |
parent | bb130ff39747b94592cb26d71b7cb097b9a4ea6b (diff) | |
parent | b60736ec1405bb0a8dd40989f67ef4c93da068ab (diff) |
Diffstat (limited to 'contrib/llvm-project/llvm/lib/IR/MDBuilder.cpp')
-rw-r--r-- | contrib/llvm-project/llvm/lib/IR/MDBuilder.cpp | 32 |
1 files changed, 13 insertions, 19 deletions
diff --git a/contrib/llvm-project/llvm/lib/IR/MDBuilder.cpp b/contrib/llvm-project/llvm/lib/IR/MDBuilder.cpp index 40d70f43132d..35af8490287b 100644 --- a/contrib/llvm-project/llvm/lib/IR/MDBuilder.cpp +++ b/contrib/llvm-project/llvm/lib/IR/MDBuilder.cpp @@ -151,24 +151,20 @@ MDNode *MDBuilder::mergeCallbackEncodings(MDNode *ExistingCallbacks, } MDNode *MDBuilder::createAnonymousAARoot(StringRef Name, MDNode *Extra) { - // To ensure uniqueness the root node is self-referential. - auto Dummy = MDNode::getTemporary(Context, None); - - SmallVector<Metadata *, 3> Args(1, Dummy.get()); + SmallVector<Metadata *, 3> Args(1, nullptr); if (Extra) Args.push_back(Extra); if (!Name.empty()) Args.push_back(createString(Name)); - MDNode *Root = MDNode::get(Context, Args); + MDNode *Root = MDNode::getDistinct(Context, Args); // At this point we have - // !0 = metadata !{} <- dummy - // !1 = metadata !{metadata !0} <- root - // Replace the dummy operand with the root node itself and delete the dummy. + // !0 = distinct !{null} <- root + // Replace the reserved operand with the root node itself. Root->replaceOperandWith(0, Root); // We now have - // !1 = metadata !{metadata !1} <- self-referential root + // !0 = distinct !{!0} <- root return Root; } @@ -310,14 +306,12 @@ MDNode *MDBuilder::createIrrLoopHeaderWeight(uint64_t Weight) { return MDNode::get(Context, Vals); } -MDNode *MDBuilder::createMisExpect(uint64_t Index, uint64_t LikleyWeight, - uint64_t UnlikleyWeight) { - auto *IntType = Type::getInt64Ty(Context); - Metadata *Vals[] = { - createString("misexpect"), - createConstant(ConstantInt::get(IntType, Index)), - createConstant(ConstantInt::get(IntType, LikleyWeight)), - createConstant(ConstantInt::get(IntType, UnlikleyWeight)), - }; - return MDNode::get(Context, Vals); +MDNode *MDBuilder::createPseudoProbeDesc(uint64_t GUID, uint64_t Hash, + Function *F) { + auto *Int64Ty = Type::getInt64Ty(Context); + SmallVector<Metadata *, 3> Ops(3); + Ops[0] = createConstant(ConstantInt::get(Int64Ty, GUID)); + Ops[1] = createConstant(ConstantInt::get(Int64Ty, Hash)); + Ops[2] = createString(F->getName()); + return MDNode::get(Context, Ops); } |