blob: d7358a08f3d6c21b871764de0de5d9d0d93cab51 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
#include <stdlib.h>
#include <cloog/cloog.h>
#define ALLOC(type) (type*)malloc(sizeof(type))
CloogStride *cloog_stride_malloc()
{
CloogStride *s;
s = ALLOC(CloogStride);
if (!s)
cloog_die("memory overflow.\n");
s->references = 1;
cloog_int_init(s->stride);
cloog_int_init(s->offset);
cloog_int_init(s->factor);
s->constraint = cloog_constraint_invalid();
return s;
}
CloogStride *cloog_stride_alloc(cloog_int_t stride, cloog_int_t offset)
{
CloogStride *s = cloog_stride_malloc();
cloog_int_set(s->stride, stride);
cloog_int_set(s->offset, offset);
cloog_int_set_si(s->factor, 0);
return s;
}
CloogStride *cloog_stride_alloc_from_constraint(cloog_int_t stride,
CloogConstraint *constraint, cloog_int_t factor)
{
CloogStride *s = cloog_stride_malloc();
cloog_int_set(s->stride, stride);
cloog_int_set(s->factor, factor);
cloog_int_set_si(s->offset, -1);
s->constraint = constraint;
return s;
}
CloogStride *cloog_stride_copy(CloogStride *stride)
{
if (!stride)
return stride;
stride->references++;
return stride;
}
void cloog_stride_free(CloogStride *stride)
{
if (!stride)
return;
stride->references--;
if (stride->references > 0)
return;
cloog_int_clear(stride->stride);
cloog_int_clear(stride->offset);
cloog_int_clear(stride->factor);
cloog_constraint_release(stride->constraint);
free(stride);
}
|