New testcase
authorChris Lattner <sabre@nondot.org>
Wed, 25 Feb 2004 23:34:04 +0000 (23:34 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 25 Feb 2004 23:34:04 +0000 (23:34 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11851 91177308-0d34-0410-b5e6-96231b3b80d8

test/Analysis/DSGraph/constant_globals.ll [new file with mode: 0644]

diff --git a/test/Analysis/DSGraph/constant_globals.ll b/test/Analysis/DSGraph/constant_globals.ll
new file mode 100644 (file)
index 0000000..82cfb96
--- /dev/null
@@ -0,0 +1,22 @@
+; RUN: analyze %s -datastructure-gc -dsgc-dspass=bu -dsgc-check-flags=A:SM
+; Constant globals should not mark stuff incomplete.  This should allow the 
+; bu pass to resolve the indirect call immediately in "test", allowing %A to
+; be marked complete and the store to happen.
+
+; This is the common case for handling vtables aggressively.
+
+%G = constant void (int*)* %foo 
+
+implementation
+
+void %foo(int *%X) {
+  store int 0, int* %X
+  ret void
+}
+
+void %test() {
+  %Fp = load void (int*)** %G
+  %A = alloca int
+  call void %Fp(int* %A)
+  ret void
+}