From d1474eea718ff867420a6e39d9c1065447d5e812 Mon Sep 17 00:00:00 2001 From: "Duncan P. N. Exon Smith" Date: Mon, 12 Jan 2015 18:41:26 +0000 Subject: [PATCH] IR: Make temporary nodes distinct Change the return of `MDNode::isDistinct()` for `MDNode::getTemporary()` to `true`. They aren't uniqued. llvm-svn: 225646 --- llvm/include/llvm/IR/Metadata.h | 4 +++- llvm/unittests/IR/MetadataTest.cpp | 6 ++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/llvm/include/llvm/IR/Metadata.h b/llvm/include/llvm/IR/Metadata.h index 75c9734ea97d..4d0a04ea6233 100644 --- a/llvm/include/llvm/IR/Metadata.h +++ b/llvm/include/llvm/IR/Metadata.h @@ -651,7 +651,9 @@ public: /// /// Distinct nodes are not uniqued, and will not be returned by \a /// MDNode::get(). - bool isDistinct() const { return IsDistinctInContext; } + bool isDistinct() const { + return isStoredDistinctInContext() || isa(this); + } protected: /// \brief Set an operand. diff --git a/llvm/unittests/IR/MetadataTest.cpp b/llvm/unittests/IR/MetadataTest.cpp index 2dd54e785bfd..a09cc9cfd7d8 100644 --- a/llvm/unittests/IR/MetadataTest.cpp +++ b/llvm/unittests/IR/MetadataTest.cpp @@ -269,6 +269,12 @@ TEST_F(MDNodeTest, getDistinct) { ASSERT_EQ(Empty, MDNode::get(Context, None)); } +TEST_F(MDNodeTest, TempIsDistinct) { + MDNode *T = MDNode::getTemporary(Context, None); + EXPECT_TRUE(T->isDistinct()); + MDNode::deleteTemporary(T); +} + TEST_F(MDNodeTest, getDistinctWithUnresolvedOperands) { // temporary !{} MDNodeFwdDecl *Temp = MDNode::getTemporary(Context, None); -- GitLab