--- /dev/null
+; Make sure that functions are removed successfully if they are referred to by
+; a global that is dead. Make sure any globals they refer to die as well.
+
+; RUN: if as < %s | opt -globaldce | dis | grep foo
+; RUN: then exit 1
+; RUN: else exit 0
+; RUN: fi
+
+%b = internal global int ()* %foo ;; Unused, kills %foo
+
+%foo = internal global int 7 ;; Should die when function %foo is killed
+
+implementation
+
+internal int %foo() { ;; dies when %b dies.
+ %ret = load int* %foo
+ ret int %ret
+}
+