forked from OSchip/llvm-project
Fix LLVMContext to match what MDKind names that the LL parser permits. Fixes PR21799!
llvm-svn: 223995
This commit is contained in:
parent
1e30897497
commit
dde76ff09c
|
@ -229,28 +229,10 @@ void LLVMContext::emitError(unsigned LocCookie, const Twine &ErrorStr) {
|
||||||
// Metadata Kind Uniquing
|
// Metadata Kind Uniquing
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
#ifndef NDEBUG
|
|
||||||
/// isValidName - Return true if Name is a valid custom metadata handler name.
|
|
||||||
static bool isValidName(StringRef MDName) {
|
|
||||||
if (MDName.empty())
|
|
||||||
return false;
|
|
||||||
|
|
||||||
if (!std::isalpha(static_cast<unsigned char>(MDName[0])))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
for (StringRef::iterator I = MDName.begin() + 1, E = MDName.end(); I != E;
|
|
||||||
++I) {
|
|
||||||
if (!std::isalnum(static_cast<unsigned char>(*I)) && *I != '_' &&
|
|
||||||
*I != '-' && *I != '.')
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/// getMDKindID - Return a unique non-zero ID for the specified metadata kind.
|
/// getMDKindID - Return a unique non-zero ID for the specified metadata kind.
|
||||||
unsigned LLVMContext::getMDKindID(StringRef Name) const {
|
unsigned LLVMContext::getMDKindID(StringRef Name) const {
|
||||||
assert(isValidName(Name) && "Invalid MDNode name");
|
assert(!std::isdigit(Name.front()) &&
|
||||||
|
"Named metadata may not start with a digit");
|
||||||
|
|
||||||
// If this is new, assign it its ID.
|
// If this is new, assign it its ID.
|
||||||
return pImpl->CustomMDKindNames.insert(std::make_pair(
|
return pImpl->CustomMDKindNames.insert(std::make_pair(
|
||||||
|
|
|
@ -5,7 +5,7 @@ define void @foo(i32 %x) {
|
||||||
call void @llvm.zonk(metadata !{i32 %x}, i64 0, metadata !1)
|
call void @llvm.zonk(metadata !{i32 %x}, i64 0, metadata !1)
|
||||||
store i32 0, i32* null, !whatever !0, !whatever_else !{}, !more !{metadata !"hello"}
|
store i32 0, i32* null, !whatever !0, !whatever_else !{}, !more !{metadata !"hello"}
|
||||||
store i32 0, i32* null, !whatever !{metadata !"hello", metadata !1, metadata !{}, metadata !2}
|
store i32 0, i32* null, !whatever !{metadata !"hello", metadata !1, metadata !{}, metadata !2}
|
||||||
ret void
|
ret void, !_1 !0
|
||||||
}
|
}
|
||||||
|
|
||||||
declare void @llvm.zonk(metadata, i64, metadata) nounwind readnone
|
declare void @llvm.zonk(metadata, i64, metadata) nounwind readnone
|
||||||
|
|
Loading…
Reference in New Issue