summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavide Italiano <davide@freebsd.org>2017-08-01 05:14:45 +0000
committerDavide Italiano <davide@freebsd.org>2017-08-01 05:14:45 +0000
commit72c4285bd601e1ccdaf9e69fb512061e371d970c (patch)
treeab5b175d8d62ac1e17b89c86d41e815babce6851
parentd6cfed6060c283dc4a6bf9ca294dcd732e8b9f72 (diff)
downloadbcm5719-llvm-72c4285bd601e1ccdaf9e69fb512061e371d970c.tar.gz
bcm5719-llvm-72c4285bd601e1ccdaf9e69fb512061e371d970c.zip
[MetaRenamer] Leave `@main` alone.
To the best of my knowledge -metarenamer is used in two cases: 1) obfuscate names, when e.g. they contain informations that can't be shared. 2) Improve clarity of the textual IR for testcases. One of the usecases if getting the output of `opt` and passing it to the lli interpreter to run the test. If metarenamer renames @main, lli can't find an entry point. llvm-svn: 309657
-rw-r--r--llvm/lib/Transforms/Utils/MetaRenamer.cpp6
-rw-r--r--llvm/test/Transforms/MetaRenamer/main.ll15
2 files changed, 20 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Utils/MetaRenamer.cpp b/llvm/lib/Transforms/Utils/MetaRenamer.cpp
index 9f2ad540c83..9af9d5fcd79 100644
--- a/llvm/lib/Transforms/Utils/MetaRenamer.cpp
+++ b/llvm/lib/Transforms/Utils/MetaRenamer.cpp
@@ -123,7 +123,11 @@ namespace {
TLI.getLibFunc(F, Tmp))
continue;
- F.setName(renamer.newName());
+ // Leave @main alone. The output of -metarenamer might be passed to
+ // lli for execution and the latter needs a main entry point.
+ if (Name != "main")
+ F.setName(renamer.newName());
+
runOnFunction(F);
}
return true;
diff --git a/llvm/test/Transforms/MetaRenamer/main.ll b/llvm/test/Transforms/MetaRenamer/main.ll
new file mode 100644
index 00000000000..f11d70f2b1a
--- /dev/null
+++ b/llvm/test/Transforms/MetaRenamer/main.ll
@@ -0,0 +1,15 @@
+; Make sure @main is left untouched.
+; RUN: opt -metarenamer -S %s | FileCheck %s
+
+; CHECK: define void @main
+; CHECK: call void @main
+
+define void @main() {
+ call void @patatino()
+ ret void
+}
+
+define void @patatino() {
+ call void @main()
+ ret void
+}
OpenPOWER on IntegriCloud