[PATCH] D41296: Limit size of non-GlobalValue name
serge via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Dec 22 06:53:23 PST 2017
serge-sans-paille updated this revision to Diff 128024.
Repository:
rL LLVM
https://reviews.llvm.org/D41296
Files:
lib/IR/Value.cpp
test/Bitcode/value-with-long-name.ll
Index: lib/IR/Value.cpp
===================================================================
--- lib/IR/Value.cpp
+++ lib/IR/Value.cpp
@@ -39,6 +39,10 @@
using namespace llvm;
+static cl::opt<unsigned> NonGlobalValueMaxNameSize(
+ "non-global-value-max-name-size", cl::Hidden, cl::init(1024),
+ cl::desc("Maximum size for the name of non-global values."));
+
//===----------------------------------------------------------------------===//
// Value Class
//===----------------------------------------------------------------------===//
@@ -244,6 +248,11 @@
if (getName() == NameRef)
return;
+ // Cap the size of non-GlobalValue names.
+ if (NameRef.size() > NonGlobalValueMaxNameSize && !isa<GlobalValue>(this))
+ NameRef =
+ NameRef.substr(0, std::max(1u, (unsigned)NonGlobalValueMaxNameSize));
+
assert(!getType()->isVoidTy() && "Cannot assign a name to void values!");
// Get the symbol table to update for this object.
Index: test/Bitcode/value-with-long-name.ll
===================================================================
--- test/Bitcode/value-with-long-name.ll
+++ test/Bitcode/value-with-long-name.ll
@@ -0,0 +1,16 @@
+; Check we correctly cap the size of newly generated non-global values name
+; Force the size to be small so that the check works on release and debug build
+
+; RUN: opt -S %s -O2 -o - -non-global-value-max-name-size=0 | FileCheck %s
+; RUN: opt -S %s -O2 -o - -non-global-value-max-name-size=1 | FileCheck %s
+
+; CHECK-NOT: %{{[a-z][a-z]+}}
+
+define i32 @f(i32 %a, i32 %b) {
+ %c = add i32 %a, %b
+ %d = add i32 %c, %a
+ %e = add i32 %d, %b
+ ret i32 %e
+}
+
+
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D41296.128024.patch
Type: text/x-patch
Size: 1678 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20171222/104acef5/attachment.bin>
More information about the llvm-commits
mailing list