pet_array: explicitly keep track of whether array is innermost
[pet.git] / tests / call_struct.scop
blob05b88b4f3e3ca4078471445fd564ce0da71d63df
1 start: 295
2 end: 407
3 indent: "\t"
4 context: '{  :  }'
5 schedule: '{ domain: "{ S_0[]; S_2[]; S_1[i] : 0 < i <= 3 }", child: { sequence: [
6   { filter: "{ S_0[] }" }, { filter: "{ S_1[i] }", child: { schedule: "L_0[{ S_1[i]
7   -> [(i)] }]" } }, { filter: "{ S_2[] }" } ] } }'
8 types:
9 - name: s0
10   definition: "struct s0 {\n    struct {\n        int a[10];\n    } f[10];\n    int
11     b;\n}"
12 - name: s
13   definition: "struct s {\n    struct s0 c[10];\n}"
14 arrays:
15 - context: '{  :  }'
16   extent: '{ s[i0] : 0 <= i0 <= 9 }'
17   element_type: struct s
18   element_size: 4040
19   element_is_record: 1
20   outer: 1
21 - context: '{  :  }'
22   extent: '{ s_c[s[i0] -> c[i1]] : 0 <= i0 <= 9 and 0 <= i1 <= 9 }'
23   element_type: struct s0
24   element_size: 404
25   element_is_record: 1
26   outer: 1
27 - context: '{  :  }'
28   extent: '{ s_c_b[s_c[s[i0] -> c[i1]] -> b[]] : 0 <= i0 <= 9 and 0 <= i1 <= 9 }'
29   element_type: int
30   element_size: 4
31 - context: '{  :  }'
32   extent: '{ s_c_f[s_c[s[i0] -> c[i1]] -> f[i2]] : 0 <= i0 <= 9 and 0 <= i1 <= 9 and
33     0 <= i2 <= 9 }'
34   element_type: <subfield>
35   element_size: 40
36   element_is_record: 1
37   outer: 1
38 - context: '{  :  }'
39   extent: '{ s_c_f_a[s_c_f[s_c[s[i0] -> c[i1]] -> f[i2]] -> a[i3]] : 0 <= i0 <= 9
40     and 0 <= i1 <= 9 and 0 <= i2 <= 9 and 0 <= i3 <= 9 }'
41   element_type: int
42   element_size: 4
43 statements:
44 - line: 30
45   domain: '{ S_0[] }'
46   body:
47     type: expression
48     expr:
49       type: call
50       name: bar
51       arguments:
52       - type: access
53         may_write: '{ S_0[] -> s_c_b[s_c[s[0] -> c[3]] -> b[]]; S_0[] -> s_c_f_a[s_c_f[s_c[s[0]
54           -> c[2]] -> f[o2]] -> a[o3]] : 0 <= o2 <= 9 and 0 <= o3 <= 9 }'
55         must_write: '{ S_0[] -> s_c_b[s_c[s[0] -> c[3]] -> b[]]; S_0[] -> s_c_f_a[s_c_f[s_c[s[0]
56           -> c[2]] -> f[o2]] -> a[o3]] : 0 <= o2 <= 9 and 0 <= o3 <= 9 }'
57         index: '{ S_0[] -> s_c[s[(0)] -> c[]] }'
58         depth: 2
59         reference: __pet_ref_0
60         read: 0
61         write: 1
62 - line: 32
63   domain: '{ S_1[i] : 0 < i <= 3 }'
64   body:
65     type: expression
66     expr:
67       type: call
68       name: bar
69       arguments:
70       - type: op
71         operation: '&'
72         arguments:
73         - type: access
74           may_write: '{ S_1[i] -> s_c_f_a[s_c_f[s_c[s[1] -> c[2 + i]] -> f[o2]] ->
75             a[o3]] : 0 <= o2 <= 9 and 0 <= o3 <= 9; S_1[i] -> s_c_b[s_c[s[1] -> c[3
76             + i]] -> b[]] }'
77           must_write: '{ S_1[i] -> s_c_f_a[s_c_f[s_c[s[1] -> c[2 + i]] -> f[o2]] ->
78             a[o3]] : 0 <= o2 <= 9 and 0 <= o3 <= 9; S_1[i] -> s_c_b[s_c[s[1] -> c[3
79             + i]] -> b[]] }'
80           index: '{ S_1[i] -> s_c[s[(1)] -> c[(i)]] }'
81           reference: __pet_ref_1
82           read: 0
83           write: 1
84 - line: 33
85   domain: '{ S_2[] }'
86   body:
87     type: expression
88     expr:
89       type: call
90       name: quux
91       arguments:
92       - type: op
93         operation: '&'
94         arguments:
95         - type: access
96           may_write: '{ S_2[] -> s_c_b[s_c[s[2] -> c[9]] -> b[]] }'
97           must_write: '{ S_2[] -> s_c_b[s_c[s[2] -> c[9]] -> b[]] }'
98           index: '{ S_2[] -> s_c_b[s_c[s[(2)] -> c[(9)]] -> b[]] }'
99           reference: __pet_ref_2
100           read: 0
101           write: 1