FWIW, the inst-namer pass <span></span>can give anonymous values a name.<br><br>On Wednesday, June 24, 2015, Matthias Braun <<a href="mailto:matze@braunis.de">matze@braunis.de</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: matze<br>
Date: Wed Jun 24 15:03:33 2015<br>
New Revision: 240583<br>
<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D240583-26view-3Drev&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=0e7UIFJcsAuu8Ui7OtH4P9I9pJobBDKS2cflsqYE8EU&s=bclf5CMfW3y1iscu1sz703tls2V83eXwx_yC5OmCIIw&e=" target="_blank">http://llvm.org/viewvc/llvm-project?rev=240583&view=rev</a><br>
Log:<br>
opt: Add option to strip or add llvm value names<br>
<br>
Modified:<br>
    llvm/trunk/tools/opt/opt.cpp<br>
<br>
Modified: llvm/trunk/tools/opt/opt.cpp<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_llvm_trunk_tools_opt_opt.cpp-3Frev-3D240583-26r1-3D240582-26r2-3D240583-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=0e7UIFJcsAuu8Ui7OtH4P9I9pJobBDKS2cflsqYE8EU&s=bX4QIly1zn-HEpp1CCNfGZOOg2iz8gFfxgqH2e7WmhU&e=" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/opt/opt.cpp?rev=240583&r1=240582&r2=240583&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/tools/opt/opt.cpp (original)<br>
+++ llvm/trunk/tools/opt/opt.cpp Wed Jun 24 15:03:33 2015<br>
@@ -105,6 +105,12 @@ StripDebug("strip-debug",<br>
            cl::desc("Strip debugger symbol info from translation unit"));<br>
<br>
 static cl::opt<bool><br>
+StripValueNames("strip-value-names", cl::desc("Remove llvm value names"));<br>
+<br>
+static cl::opt<bool><br>
+NameValues("name-values", cl::desc("Give anonymous llvm values a name"));<br>
+<br>
+static cl::opt<bool><br>
 DisableInline("disable-inlining", cl::desc("Do not run the inliner pass"));<br>
<br>
 static cl::opt<bool><br>
@@ -281,6 +287,37 @@ static TargetMachine* GetTargetMachine(T<br>
                                         GetCodeGenOptLevel());<br>
 }<br>
<br>
+static void removeValueNames(Module &Mod) {<br>
+  for (Function &F : Mod) {<br>
+    for (BasicBlock &BB : F) {<br>
+      BB.setName("");<br>
+      for (Instruction &I : BB)<br>
+        I.setName("");<br>
+    }<br>
+  }<br>
+}<br>
+<br>
+static void nameValuesInFunction(Function &F) {<br>
+  bool FirstBB = true;<br>
+  for (BasicBlock &BB : F) {<br>
+    if (!BB.hasName())<br>
+      BB.setName(FirstBB ? "entry" : "BB");<br>
+    FirstBB = false;<br>
+<br>
+    for (Instruction &I : BB) {<br>
+      if (I.getType()->isVoidTy())<br>
+        continue;<br>
+      if (!I.hasName())<br>
+        I.setName("v");<br>
+    }<br>
+  }<br>
+}<br>
+<br>
+static void nameValues(Module &Mod) {<br>
+  for (Function &F : Mod)<br>
+    nameValuesInFunction(F);<br>
+}<br>
+<br>
 #ifdef LINK_POLLY_INTO_TOOLS<br>
 namespace polly {<br>
 void initializePollyPasses(llvm::PassRegistry &Registry);<br>
@@ -351,6 +388,12 @@ int main(int argc, char **argv) {<br>
   if (StripDebug)<br>
     StripDebugInfo(*M);<br>
<br>
+  if (StripValueNames)<br>
+    removeValueNames(*M);<br>
+<br>
+  if (NameValues)<br>
+    nameValues(*M);<br>
+<br>
   // Immediately run the verifier to catch any problems before starting up the<br>
   // pass pipelines.  Otherwise we can crash on broken code during<br>
   // doInitialization().<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="javascript:;" onclick="_e(event, &#39;cvml&#39;, &#39;llvm-commits@cs.uiuc.edu&#39;)">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</blockquote>