implement linking of globals to functions, in one direction
(replacing a function with a global).  This is needed when building
llvm itself with LTO on darwin, because of the EXPLICIT_SYMBOL hack
in lib/system/DynamicLibrary.cpp.

Implementation of linking the other way will need to wait for a 
cleanup of LinkFunctionProtos.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53546 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/test/Linker/link-global-to-func.ll b/test/Linker/link-global-to-func.ll
new file mode 100644
index 0000000..b492e52
--- /dev/null
+++ b/test/Linker/link-global-to-func.ll
@@ -0,0 +1,13 @@
+; RUN: llvm-as %s -o %t1.bc -f
+; RUN: echo {declare void @__eprintf(i8*, i8*, i32, i8*) noreturn     define void @foo() {      tail call void @__eprintf( i8* undef, i8* undef, i32 4, i8* null ) noreturn nounwind       unreachable }} | llvm-as -o %t2.bc -f
+; RUN: llvm-link %t2.bc %t1.bc -o - | llvm-dis | grep __eprintf
+; RN: llvm-link %t1.bc %t2.bc -o - | llvm-dis | grep __eprintf
+
+; rdar://6072702
+
+@__eprintf = external global i8*		; <i8**> [#uses=1]
+
+define i8* @test() {
+	%A = load i8** @__eprintf		; <i8*> [#uses=1]
+	ret i8* %A
+}