diff options
author | Davide Italiano <davide@freebsd.org> | 2017-08-01 05:14:45 +0000 |
---|---|---|
committer | Davide Italiano <davide@freebsd.org> | 2017-08-01 05:14:45 +0000 |
commit | 72c4285bd601e1ccdaf9e69fb512061e371d970c (patch) | |
tree | ab5b175d8d62ac1e17b89c86d41e815babce6851 | |
parent | d6cfed6060c283dc4a6bf9ca294dcd732e8b9f72 (diff) | |
download | bcm5719-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.cpp | 6 | ||||
-rw-r--r-- | llvm/test/Transforms/MetaRenamer/main.ll | 15 |
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 +} |