diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2015-05-27 20:26:41 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2015-05-27 20:26:41 +0000 | 
| commit | ff0cc061ecf297f1556e906d229826fd709f37d6 (patch) | |
| tree | bd13a22d9db57ccf3eddbc07b32c18109521d050 /contrib/llvm/lib/IR/MDBuilder.cpp | |
| parent | e14ba20ace4c6ab45aca5130defd992ab7d6bf5f (diff) | |
| parent | 5a5ac124e1efaf208671f01c46edb15f29ed2a0b (diff) | |
Notes
Diffstat (limited to 'contrib/llvm/lib/IR/MDBuilder.cpp')
| -rw-r--r-- | contrib/llvm/lib/IR/MDBuilder.cpp | 26 | 
1 files changed, 20 insertions, 6 deletions
diff --git a/contrib/llvm/lib/IR/MDBuilder.cpp b/contrib/llvm/lib/IR/MDBuilder.cpp index c7fcf7a2c347..354592df4c96 100644 --- a/contrib/llvm/lib/IR/MDBuilder.cpp +++ b/contrib/llvm/lib/IR/MDBuilder.cpp @@ -53,24 +53,38 @@ MDNode *MDBuilder::createBranchWeights(ArrayRef<uint32_t> Weights) {    return MDNode::get(Context, Vals);  } +MDNode *MDBuilder::createFunctionEntryCount(uint64_t Count) { +  SmallVector<Metadata *, 2> Vals(2); +  Vals[0] = createString("function_entry_count"); + +  Type *Int64Ty = Type::getInt64Ty(Context); +  Vals[1] = createConstant(ConstantInt::get(Int64Ty, Count)); + +  return MDNode::get(Context, Vals); +} +  MDNode *MDBuilder::createRange(const APInt &Lo, const APInt &Hi) {    assert(Lo.getBitWidth() == Hi.getBitWidth() && "Mismatched bitwidths!"); + +  Type *Ty = IntegerType::get(Context, Lo.getBitWidth()); +  return createRange(ConstantInt::get(Ty, Lo), ConstantInt::get(Ty, Hi)); +} + +MDNode *MDBuilder::createRange(Constant *Lo, Constant *Hi) {    // If the range is everything then it is useless.    if (Hi == Lo)      return nullptr;    // Return the range [Lo, Hi). -  Type *Ty = IntegerType::get(Context, Lo.getBitWidth()); -  Metadata *Range[2] = {createConstant(ConstantInt::get(Ty, Lo)), -                        createConstant(ConstantInt::get(Ty, Hi))}; +  Metadata *Range[2] = {createConstant(Lo), createConstant(Hi)};    return MDNode::get(Context, Range);  }  MDNode *MDBuilder::createAnonymousAARoot(StringRef Name, MDNode *Extra) {    // To ensure uniqueness the root node is self-referential. -  MDNode *Dummy = MDNode::getTemporary(Context, None); +  auto Dummy = MDNode::getTemporary(Context, None); -  SmallVector<Metadata *, 3> Args(1, Dummy); +  SmallVector<Metadata *, 3> Args(1, Dummy.get());    if (Extra)      Args.push_back(Extra);    if (!Name.empty()) @@ -82,7 +96,7 @@ MDNode *MDBuilder::createAnonymousAARoot(StringRef Name, MDNode *Extra) {    //   !1 = metadata !{metadata !0} <- root    // Replace the dummy operand with the root node itself and delete the dummy.    Root->replaceOperandWith(0, Root); -  MDNode::deleteTemporary(Dummy); +    // We now have    //   !1 = metadata !{metadata !1} <- self-referential root    return Root;  | 
