diff options
-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 +} |