Index: llvm/trunk/lib/Transforms/Instrumentation/PGOInstrumentation.cpp =================================================================== --- llvm/trunk/lib/Transforms/Instrumentation/PGOInstrumentation.cpp +++ llvm/trunk/lib/Transforms/Instrumentation/PGOInstrumentation.cpp @@ -776,7 +776,7 @@ IRLevelVersionVariable->setVisibility(GlobalValue::DefaultVisibility); Triple TT(M.getTargetTriple()); if (TT.isOSBinFormatMachO()) - IRLevelVersionVariable->setLinkage(GlobalValue::LinkOnceODRLinkage); + IRLevelVersionVariable->setLinkage(GlobalValue::LinkOnceAnyLinkage); else IRLevelVersionVariable->setComdat(M.getOrInsertComdat( StringRef(INSTR_PROF_QUOTE(IR_LEVEL_PROF_VERSION_VAR)))); Index: llvm/trunk/test/Transforms/PGOProfile/macho.ll =================================================================== --- llvm/trunk/test/Transforms/PGOProfile/macho.ll +++ llvm/trunk/test/Transforms/PGOProfile/macho.ll @@ -0,0 +1,9 @@ +; RUN: opt < %s -mtriple=x86_64-apple-macosx10.11.0 -pgo-instr-gen -instrprof -S | llc | FileCheck %s --check-prefix=MACHO-DIRECTIVE + +target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128" + +; MACHO-DIRECTIVE: .weak_definition ___llvm_profile_raw_version +define i32 @test_macho(i32 %i) { +entry: + ret i32 %i +}