--- /dev/null
+; RUN: analyze %s -datastructure-gc -dsgc-dspass=td -dsgc-abort-if-incomplete=Ptr
+
+
+
+int %main() {
+ call void %A()
+ call void %B()
+ ret int 0
+}
+
+internal void %A() {
+ %V = malloc int
+ call void %Callee(int* %V)
+ ret void
+}
+
+internal void %B() {
+ %V = malloc int
+ call void %Callee(int* %V)
+ ret void
+}
+
+internal void %Callee(int* %Ptr) {
+ load int* %Ptr
+ ret void
+}
--- /dev/null
+; Test to check for support for "physical subtyping"
+;
+; RUN: analyze %s -datastructure-gc -dsgc-abort-if-any-collapsed
+;
+%S = type { int }
+%T = type { int, float, double }
+
+int %main() {
+ %A = alloca %S
+ %Ap = getelementptr %S* %A, long 0, ubyte 0
+ %B = alloca %T
+ %Bp = getelementptr %T* %B, long 0, ubyte 0
+ %C = alloca int*
+
+ store int* %Ap, int** %C
+ store int* %Bp, int** %C
+ ret int 0
+}