Introduce enum value for previously defined metadata -- make.implicit

Summary: This patch adds enum value for an existing metadata type -- make.implicit. Using preassigned enum will be helpful to get compile time type checking and avoid string construction and comparison. The patch also changes uses of make.implicit from string metadata to enum metadata. There is no functionality change.

Reviewers: reames

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D11698

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243954 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chen Li 2015-08-04 04:41:34 +00:00
parent a89971af5a
commit 7b3ed76a63
3 changed files with 10 additions and 2 deletions

View File

@ -60,7 +60,8 @@ public:
MD_mem_parallel_loop_access = 10, // "llvm.mem.parallel_loop_access"
MD_nonnull = 11, // "nonnull"
MD_dereferenceable = 12, // "dereferenceable"
MD_dereferenceable_or_null = 13 // "dereferenceable_or_null"
MD_dereferenceable_or_null = 13, // "dereferenceable_or_null"
MD_make_implicit = 14 // "make.implicit"
};
/// getMDKindID - Return a unique non-zero ID for the specified metadata kind.

View File

@ -38,6 +38,7 @@
#include "llvm/CodeGen/MachineModuleInfo.h"
#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/Instruction.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
#include "llvm/Target/TargetSubtargetInfo.h"
@ -134,7 +135,7 @@ bool ImplicitNullChecks::analyzeBlockForNullChecks(
MDNode *BranchMD =
MBB.getBasicBlock()
? MBB.getBasicBlock()->getTerminator()->getMetadata("make.implicit")
? MBB.getBasicBlock()->getTerminator()->getMetadata(LLVMContext::MD_make_implicit)
: nullptr;
if (!BranchMD)
return false;

View File

@ -104,6 +104,12 @@ LLVMContext::LLVMContext() : pImpl(new LLVMContextImpl(*this)) {
assert(DereferenceableOrNullID == MD_dereferenceable_or_null &&
"dereferenceable_or_null kind id drifted");
(void)DereferenceableOrNullID;
// Create the 'make.implicit' metadata kind.
unsigned MakeImplicitID = getMDKindID("make.implicit");
assert(MakeImplicitID == MD_make_implicit &&
"make.implicit kind id drifted");
(void)MakeImplicitID;
}
LLVMContext::~LLVMContext() { delete pImpl; }