diff --git a/lib/Transforms/Utils/NameAnonFunctions.cpp b/lib/Transforms/Utils/NameAnonFunctions.cpp index 6dc3520b61a..f6dd98d12ab 100644 --- a/lib/Transforms/Utils/NameAnonFunctions.cpp +++ b/lib/Transforms/Utils/NameAnonFunctions.cpp @@ -67,12 +67,17 @@ bool llvm::nameUnamedFunctions(Module &M) { bool Changed = false; ModuleHasher ModuleHash(M); int count = 0; - for (auto &F : M) { - if (F.hasName()) - continue; - F.setName(Twine("anon.") + ModuleHash.get() + "." + Twine(count++)); + auto RenameIfNeed = [&] (GlobalValue &GV) { + if (GV.hasName()) + return; + GV.setName(Twine("anon.") + ModuleHash.get() + "." + Twine(count++)); Changed = true; - } + }; + for (auto &GO : M.global_objects()) + RenameIfNeed(GO); + for (auto &GA : M.aliases()) + RenameIfNeed(GA); + return Changed; } diff --git a/test/Transforms/NameAnonFunctions/rename.ll b/test/Transforms/NameAnonFunctions/rename.ll index 851746f7a97..de576cb95c5 100644 --- a/test/Transforms/NameAnonFunctions/rename.ll +++ b/test/Transforms/NameAnonFunctions/rename.ll @@ -11,6 +11,8 @@ define internal void @bar() { ret void } +; CHECK: @anon.acbd18db4cc2f85cedef654fccc4a4d8.3 = global i8 0 +; CHECK: @anon.acbd18db4cc2f85cedef654fccc4a4d8.4 = alias i8, i8* @anon.acbd18db4cc2f85cedef654fccc4a4d8.3 ; CHECK: define void @anon.acbd18db4cc2f85cedef654fccc4a4d8.0() ; CHECK: define void @anon.acbd18db4cc2f85cedef654fccc4a4d8.1() ; CHECK: define void @anon.acbd18db4cc2f85cedef654fccc4a4d8.2() @@ -25,3 +27,7 @@ define void @2() { ret void } + +@3 = global i8 0 + +@4 = alias i8, i8 *@3