[llvm] r332810 - [LLVM-C] Use Length-Providing Value Name Getters and Setters
Robert Widmann via llvm-commits
llvm-commits at lists.llvm.org
Sat May 19 08:08:37 PDT 2018
Author: codafi
Date: Sat May 19 08:08:36 2018
New Revision: 332810
URL: http://llvm.org/viewvc/llvm-project?rev=332810&view=rev
Log:
[LLVM-C] Use Length-Providing Value Name Getters and Setters
Summary:
- Provide LLVMGetValueName2 and LLVMSetValueName2 that return and take the length of the provided C string respectively
- Deprecate LLVMGetValueName and LLVMSetValueName
Reviewers: whitequark, deadalnix
Reviewed By: whitequark
Subscribers: llvm-commits, harlanhaskins
Differential Revision: https://reviews.llvm.org/D46890
Modified:
llvm/trunk/include/llvm-c/Core.h
llvm/trunk/lib/IR/Core.cpp
llvm/trunk/tools/llvm-c-test/echo.cpp
Modified: llvm/trunk/include/llvm-c/Core.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm-c/Core.h?rev=332810&r1=332809&r2=332810&view=diff
==============================================================================
--- llvm/trunk/include/llvm-c/Core.h (original)
+++ llvm/trunk/include/llvm-c/Core.h Sat May 19 08:08:36 2018
@@ -1496,14 +1496,14 @@ LLVMValueKind LLVMGetValueKind(LLVMValue
*
* @see llvm::Value::getName()
*/
-const char *LLVMGetValueName(LLVMValueRef Val);
+const char *LLVMGetValueName2(LLVMValueRef Val, size_t *Length);
/**
* Set the string name of a value.
*
* @see llvm::Value::setName()
*/
-void LLVMSetValueName(LLVMValueRef Val, const char *Name);
+void LLVMSetValueName2(LLVMValueRef Val, const char *Name, size_t NameLen);
/**
* Dump a representation of a value to stderr.
@@ -1555,6 +1555,11 @@ LLVM_FOR_EACH_VALUE_SUBCLASS(LLVM_DECLAR
LLVMValueRef LLVMIsAMDNode(LLVMValueRef Val);
LLVMValueRef LLVMIsAMDString(LLVMValueRef Val);
+/** Deprecated: Use LLVMGetValueName2 instead. */
+const char *LLVMGetValueName(LLVMValueRef Val);
+/** Deprecated: Use LLVMSetValueName2 instead. */
+void LLVMSetValueName(LLVMValueRef Val, const char *Name);
+
/**
* @}
*/
Modified: llvm/trunk/lib/IR/Core.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/Core.cpp?rev=332810&r1=332809&r2=332810&view=diff
==============================================================================
--- llvm/trunk/lib/IR/Core.cpp (original)
+++ llvm/trunk/lib/IR/Core.cpp Sat May 19 08:08:36 2018
@@ -796,6 +796,16 @@ LLVMValueKind LLVMGetValueKind(LLVMValue
}
}
+const char *LLVMGetValueName2(LLVMValueRef Val, size_t *Length) {
+ auto *V = unwrap(Val);
+ *Length = V->getName().size();
+ return V->getName().data();
+}
+
+void LLVMSetValueName2(LLVMValueRef Val, const char *Name, size_t NameLen) {
+ unwrap(Val)->setName(StringRef(Name, NameLen));
+}
+
const char *LLVMGetValueName(LLVMValueRef Val) {
return unwrap(Val)->getName().data();
}
Modified: llvm/trunk/tools/llvm-c-test/echo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-c-test/echo.cpp?rev=332810&r1=332809&r2=332810&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-c-test/echo.cpp (original)
+++ llvm/trunk/tools/llvm-c-test/echo.cpp Sat May 19 08:08:36 2018
@@ -174,8 +174,9 @@ static ValueMap clone_params(LLVMValueRe
LLVMValueRef SrcNext = nullptr;
LLVMValueRef DstNext = nullptr;
while (true) {
- const char *Name = LLVMGetValueName(SrcCur);
- LLVMSetValueName(DstCur, Name);
+ size_t NameLen;
+ const char *Name = LLVMGetValueName2(SrcCur, &NameLen);
+ LLVMSetValueName2(DstCur, Name, NameLen);
VMap[SrcCur] = DstCur;
@@ -232,7 +233,8 @@ static LLVMValueRef clone_constant_impl(
// Maybe it is a symbol
if (LLVMIsAGlobalValue(Cst)) {
- const char *Name = LLVMGetValueName(Cst);
+ size_t NameLen;
+ const char *Name = LLVMGetValueName2(Cst, &NameLen);
// Try function
if (LLVMIsAFunction(Cst)) {
@@ -402,7 +404,8 @@ struct FunCloner {
if (!LLVMIsAInstruction(Src))
report_fatal_error("Expected an instruction");
- const char *Name = LLVMGetValueName(Src);
+ size_t NameLen;
+ const char *Name = LLVMGetValueName2(Src, &NameLen);
// Check if this is something we already computed.
{
@@ -734,7 +737,8 @@ struct FunCloner {
report_fatal_error("Basic block is not a basic block");
const char *Name = LLVMGetBasicBlockName(Src);
- const char *VName = LLVMGetValueName(V);
+ size_t NameLen;
+ const char *VName = LLVMGetValueName2(V, &NameLen);
if (Name != VName)
report_fatal_error("Basic block name mismatch");
@@ -830,7 +834,8 @@ static void declare_symbols(LLVMModuleRe
}
while (true) {
- const char *Name = LLVMGetValueName(Cur);
+ size_t NameLen;
+ const char *Name = LLVMGetValueName2(Cur, &NameLen);
if (LLVMGetNamedGlobal(M, Name))
report_fatal_error("GlobalVariable already cloned");
LLVMAddGlobal(M, LLVMGetElementType(TypeCloner(M).Clone(Cur)), Name);
@@ -863,7 +868,8 @@ FunDecl:
Cur = Begin;
Next = nullptr;
while (true) {
- const char *Name = LLVMGetValueName(Cur);
+ size_t NameLen;
+ const char *Name = LLVMGetValueName2(Cur, &NameLen);
if (LLVMGetNamedFunction(M, Name))
report_fatal_error("Function already cloned");
auto Ty = LLVMGetElementType(TypeCloner(M).Clone(Cur));
@@ -909,7 +915,8 @@ static void clone_symbols(LLVMModuleRef
}
while (true) {
- const char *Name = LLVMGetValueName(Cur);
+ size_t NameLen;
+ const char *Name = LLVMGetValueName2(Cur, &NameLen);
LLVMValueRef G = LLVMGetNamedGlobal(M, Name);
if (!G)
report_fatal_error("GlobalVariable must have been declared already");
@@ -952,13 +959,16 @@ FunClone:
Cur = Begin;
Next = nullptr;
while (true) {
- const char *Name = LLVMGetValueName(Cur);
+ size_t NameLen;
+ const char *Name = LLVMGetValueName2(Cur, &NameLen);
LLVMValueRef Fun = LLVMGetNamedFunction(M, Name);
if (!Fun)
report_fatal_error("Function must have been declared already");
if (LLVMHasPersonalityFn(Cur)) {
- const char *FName = LLVMGetValueName(LLVMGetPersonalityFn(Cur));
+ size_t FNameLen;
+ const char *FName = LLVMGetValueName2(LLVMGetPersonalityFn(Cur),
+ &FNameLen);
LLVMValueRef P = LLVMGetNamedFunction(M, FName);
if (!P)
report_fatal_error("Could not find personality function");
More information about the llvm-commits
mailing list