1// RUN: %Slang %s
2// RUN: %rs-filecheck-wrapper %s
3
4#pragma version(1)
5#pragma rs java_package_name(ref_count)
6
7struct Wrapper {
8  rs_element e;
9  rs_type t;
10};
11
12
13// CHECK: call void @_Z13rsClearObjectP10rs_element(%struct.rs_element{{.*}}* nonnull %.rs.tmp{{[0-9]+}})
14// CHECK: call void @_Z11rsSetObjectP10rs_elementS_(%struct.rs_element{{.*}}* nonnull %.rs.retval{{[0-9]+}}, {{.*}})
15
16static rs_element bar() {
17  rs_element x = {0};
18  return x;
19}
20
21// CHECK: call void @_Z11rsSetObjectP10rs_elementS_(%struct.rs_element{{.*}}* %{{.*}}, {{.*}})
22// CHECK: call void @_Z11rsSetObjectP7rs_typeS_(%struct.rs_type{{.*}}* %{{.*}}, {{.*}})
23// CHECK: call void @_Z13rsClearObjectP10rs_element(%struct.rs_element{{.*}}* {{.*}})
24// CHECK: call void @_Z13rsClearObjectP7rs_type(%struct.rs_type{{.*}}* {{.*}})
25
26static struct Wrapper baz() {
27  struct Wrapper x = { 0, 0 };
28  return x;
29}
30
31void entrypoint() {
32  rs_element e = bar();
33  struct Wrapper w = baz();
34  if (rsIsObject(e) && rsIsObject(w.e) && rsIsObject(w.t)) {
35    rsDebug("good objects", 0);
36  }
37}
38