Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Zwinkau
libfirm
Commits
1209ae49
Commit
1209ae49
authored
Dec 01, 2012
by
Christoph Mallon
Browse files
array: Add and use NEW_ARR_DZ().
parent
5933e03f
Changes
14
Show whitespace changes
Inline
Side-by-side
include/libfirm/adt/array.h
View file @
1209ae49
...
...
@@ -109,6 +109,12 @@
? (type *)ir_new_arr_d((obstack), (nelts), sizeof(type) * (nelts)) \
: (type *)arr_mt_descr.elts)
/**
* Create a dynamic array on an obstack and null its contents.
*/
#define NEW_ARR_DZ(type, obstack, nelts) \
((type*)memset(NEW_ARR_D(type, (obstack), (nelts)), 0, sizeof(type) * (nelts)))
/**
* Creates a new dynamic array with the same number of elements as a
* given one.
...
...
ir/be/TEMPLATE/TEMPLATE_new_nodes.c
View file @
1209ae49
...
...
@@ -108,8 +108,7 @@ static void init_TEMPLATE_attributes(ir_node *node, arch_irn_flags_t flags,
arch_set_irn_register_reqs_in
(
node
,
in_reqs
);
info
=
be_get_info
(
node
);
info
->
out_infos
=
NEW_ARR_D
(
reg_out_info_t
,
obst
,
n_res
);
memset
(
info
->
out_infos
,
0
,
n_res
*
sizeof
(
info
->
out_infos
[
0
]));
info
->
out_infos
=
NEW_ARR_DZ
(
reg_out_info_t
,
obst
,
n_res
);
}
static
void
set_TEMPLATE_value
(
ir_node
*
node
,
ir_tarval
*
value
)
...
...
ir/be/amd64/amd64_new_nodes.c
View file @
1209ae49
...
...
@@ -130,8 +130,7 @@ static void init_amd64_attributes(ir_node *node, arch_irn_flags_t flags,
arch_set_irn_register_reqs_in
(
node
,
in_reqs
);
info
=
be_get_info
(
node
);
info
->
out_infos
=
NEW_ARR_D
(
reg_out_info_t
,
obst
,
n_res
);
memset
(
info
->
out_infos
,
0
,
n_res
*
sizeof
(
info
->
out_infos
[
0
]));
info
->
out_infos
=
NEW_ARR_DZ
(
reg_out_info_t
,
obst
,
n_res
);
attr
->
data
.
ins_permuted
=
0
;
attr
->
data
.
cmp_unsigned
=
0
;
...
...
ir/be/arm/arm_new_nodes.c
View file @
1209ae49
...
...
@@ -323,8 +323,7 @@ static void init_arm_attributes(ir_node *node, arch_irn_flags_t flags,
attr
->
is_load_store
=
false
;
info
=
be_get_info
(
node
);
info
->
out_infos
=
NEW_ARR_D
(
reg_out_info_t
,
obst
,
n_res
);
memset
(
info
->
out_infos
,
0
,
n_res
*
sizeof
(
info
->
out_infos
[
0
]));
info
->
out_infos
=
NEW_ARR_DZ
(
reg_out_info_t
,
obst
,
n_res
);
}
static
void
init_arm_load_store_attributes
(
ir_node
*
res
,
ir_mode
*
ls_mode
,
...
...
ir/be/beinfo.c
View file @
1209ae49
...
...
@@ -72,8 +72,7 @@ void be_info_new_node(ir_graph *irg, ir_node *node)
info
->
flags
|=
arch_irn_flags_not_scheduled
;
/* FALLTHROUGH */
case
iro_Phi
:
info
->
out_infos
=
NEW_ARR_D
(
reg_out_info_t
,
obst
,
1
);
memset
(
info
->
out_infos
,
0
,
1
*
sizeof
(
info
->
out_infos
[
0
]));
info
->
out_infos
=
NEW_ARR_DZ
(
reg_out_info_t
,
obst
,
1
);
info
->
out_infos
[
0
].
req
=
arch_no_register_req
;
break
;
default:
...
...
ir/be/benode.c
View file @
1209ae49
...
...
@@ -231,8 +231,7 @@ static void init_node_attr(ir_node *node, int n_inputs, int n_outputs)
}
info
->
in_reqs
=
in_reqs
;
info
->
out_infos
=
NEW_ARR_D
(
reg_out_info_t
,
obst
,
n_outputs
);
memset
(
info
->
out_infos
,
0
,
n_outputs
*
sizeof
(
info
->
out_infos
[
0
]));
info
->
out_infos
=
NEW_ARR_DZ
(
reg_out_info_t
,
obst
,
n_outputs
);
for
(
int
i
=
0
;
i
<
n_outputs
;
++
i
)
{
info
->
out_infos
[
i
].
req
=
arch_no_register_req
;
}
...
...
@@ -1047,8 +1046,7 @@ ir_node *be_new_Phi(ir_node *block, int n_ins, ir_node **ins, ir_mode *mode,
ir_node
*
phi
=
new_ir_node
(
NULL
,
irg
,
block
,
op_Phi
,
mode
,
n_ins
,
ins
);
phi
->
attr
.
phi
.
u
.
backedge
=
new_backedge_arr
(
get_irg_obstack
(
irg
),
n_ins
);
info
=
be_get_info
(
phi
);
info
->
out_infos
=
NEW_ARR_D
(
reg_out_info_t
,
obst
,
1
);
memset
(
info
->
out_infos
,
0
,
1
*
sizeof
(
info
->
out_infos
[
0
]));
info
->
out_infos
=
NEW_ARR_DZ
(
reg_out_info_t
,
obst
,
1
);
info
->
in_reqs
=
OALLOCN
(
obst
,
const
arch_register_req_t
*
,
n_ins
);
info
->
out_infos
[
0
].
req
=
req
;
...
...
ir/be/ia32/ia32_common_transform.c
View file @
1209ae49
...
...
@@ -457,9 +457,7 @@ ir_node *ia32_gen_ASM(ir_node *node)
reg_map_size
=
constraint
->
pos
+
1
;
}
ia32_asm_reg_t
*
register_map
=
NEW_ARR_D
(
ia32_asm_reg_t
,
obst
,
reg_map_size
);
memset
(
register_map
,
0
,
reg_map_size
*
sizeof
(
register_map
[
0
]));
ia32_asm_reg_t
*
const
register_map
=
NEW_ARR_DZ
(
ia32_asm_reg_t
,
obst
,
reg_map_size
);
/* construct output constraints */
size_t
out_size
=
out_arity
+
1
;
...
...
ir/be/ia32/ia32_new_nodes.c
View file @
1209ae49
...
...
@@ -790,8 +790,7 @@ static void init_ia32_attributes(ir_node *node, arch_irn_flags_t flags,
#endif
info
=
be_get_info
(
node
);
info
->
out_infos
=
NEW_ARR_D
(
reg_out_info_t
,
obst
,
n_res
);
memset
(
info
->
out_infos
,
0
,
n_res
*
sizeof
(
info
->
out_infos
[
0
]));
info
->
out_infos
=
NEW_ARR_DZ
(
reg_out_info_t
,
obst
,
n_res
);
}
static
void
init_ia32_x87_attributes
(
ir_node
*
res
)
...
...
ir/be/sparc/sparc_new_nodes.c
View file @
1209ae49
...
...
@@ -235,8 +235,7 @@ static void init_sparc_attributes(ir_node *node, arch_irn_flags_t flags,
arch_set_irn_register_reqs_in
(
node
,
in_reqs
);
info
=
be_get_info
(
node
);
info
->
out_infos
=
NEW_ARR_D
(
reg_out_info_t
,
obst
,
n_res
);
memset
(
info
->
out_infos
,
0
,
n_res
*
sizeof
(
info
->
out_infos
[
0
]));
info
->
out_infos
=
NEW_ARR_DZ
(
reg_out_info_t
,
obst
,
n_res
);
}
static
void
init_sparc_load_store_attributes
(
ir_node
*
res
,
ir_mode
*
ls_mode
,
...
...
ir/ir/ircons.c
View file @
1209ae49
...
...
@@ -444,8 +444,7 @@ ir_node *new_rd_immBlock(dbg_info *dbgi, ir_graph *irg)
set_Block_block_visited
(
res
,
0
);
/* Create and initialize array for Phi-node construction. */
res
->
attr
.
block
.
graph_arr
=
NEW_ARR_D
(
ir_node
*
,
get_irg_obstack
(
irg
),
irg
->
n_loc
);
memset
(
res
->
attr
.
block
.
graph_arr
,
0
,
sizeof
(
ir_node
*
)
*
irg
->
n_loc
);
res
->
attr
.
block
.
graph_arr
=
NEW_ARR_DZ
(
ir_node
*
,
get_irg_obstack
(
irg
),
irg
->
n_loc
);
/* Immature block may not be optimized! */
irn_verify_irg
(
res
,
irg
);
...
...
@@ -718,8 +717,7 @@ ir_node *new_r_Block_noopt(ir_graph *irg, int arity, ir_node *in[])
set_Block_matured
(
res
,
1
);
/* Create and initialize array for Phi-node construction. */
if
(
irg_is_constrained
(
irg
,
IR_GRAPH_CONSTRAINT_CONSTRUCTION
))
{
res
->
attr
.
block
.
graph_arr
=
NEW_ARR_D
(
ir_node
*
,
get_irg_obstack
(
irg
),
irg
->
n_loc
);
memset
(
res
->
attr
.
block
.
graph_arr
,
0
,
irg
->
n_loc
*
sizeof
(
ir_node
*
));
res
->
attr
.
block
.
graph_arr
=
NEW_ARR_DZ
(
ir_node
*
,
get_irg_obstack
(
irg
),
irg
->
n_loc
);
}
irn_verify_irg
(
res
,
irg
);
return
res
;
...
...
ir/ir/irssacons.c
View file @
1209ae49
...
...
@@ -44,8 +44,7 @@ static void prepare_blocks(ir_node *block, void *env)
(
void
)
env
;
/* reset mature flag */
set_Block_matured
(
block
,
0
);
block
->
attr
.
block
.
graph_arr
=
NEW_ARR_D
(
ir_node
*
,
get_irg_obstack
(
irg
),
n_loc
);
memset
(
block
->
attr
.
block
.
graph_arr
,
0
,
sizeof
(
ir_node
*
)
*
n_loc
);
block
->
attr
.
block
.
graph_arr
=
NEW_ARR_DZ
(
ir_node
*
,
get_irg_obstack
(
irg
),
n_loc
);
set_Block_phis
(
block
,
NULL
);
}
...
...
ir/opt/loop.c
View file @
1209ae49
...
...
@@ -493,8 +493,7 @@ static void set_unroll_copy(ir_node *n, int nr, ir_node *cp)
info
=
ir_nodemap_get
(
unrolling_node_info
,
&
map
,
n
);
if
(
!
info
)
{
ir_node
**
arr
=
NEW_ARR_D
(
ir_node
*
,
&
obst
,
unroll_nr
);
memset
(
arr
,
0
,
unroll_nr
*
sizeof
(
ir_node
*
));
ir_node
**
const
arr
=
NEW_ARR_DZ
(
ir_node
*
,
&
obst
,
unroll_nr
);
info
=
OALLOCZ
(
&
obst
,
unrolling_node_info
);
info
->
copies
=
arr
;
...
...
ir/opt/opt_ldst.c
View file @
1209ae49
...
...
@@ -2138,22 +2138,19 @@ void opt_ldst(ir_graph *irg)
/* create the current set */
env
.
curr_set
=
rbitset_obstack_alloc
(
&
env
.
obst
,
env
.
rbs_size
);
rbitset_set
(
env
.
curr_set
,
env
.
rbs_size
-
1
);
env
.
curr_id_2_memop
=
NEW_ARR_D
(
memop_t
*
,
&
env
.
obst
,
env
.
rbs_size
);
memset
(
env
.
curr_id_2_memop
,
0
,
env
.
rbs_size
*
sizeof
(
env
.
curr_id_2_memop
[
0
]));
env
.
curr_id_2_memop
=
NEW_ARR_DZ
(
memop_t
*
,
&
env
.
obst
,
env
.
rbs_size
);
for
(
bl
=
env
.
forward
;
bl
!=
NULL
;
bl
=
bl
->
forward_next
)
{
/* set sentinel bits */
bl
->
avail_out
=
rbitset_obstack_alloc
(
&
env
.
obst
,
env
.
rbs_size
);
rbitset_set
(
bl
->
avail_out
,
env
.
rbs_size
-
1
);
bl
->
id_2_memop_avail
=
NEW_ARR_D
(
memop_t
*
,
&
env
.
obst
,
env
.
rbs_size
);
memset
(
bl
->
id_2_memop_avail
,
0
,
env
.
rbs_size
*
sizeof
(
bl
->
id_2_memop_avail
[
0
]));
bl
->
id_2_memop_avail
=
NEW_ARR_DZ
(
memop_t
*
,
&
env
.
obst
,
env
.
rbs_size
);
bl
->
anticL_in
=
rbitset_obstack_alloc
(
&
env
.
obst
,
env
.
rbs_size
);
rbitset_set
(
bl
->
anticL_in
,
env
.
rbs_size
-
1
);
bl
->
id_2_memop_antic
=
NEW_ARR_D
(
memop_t
*
,
&
env
.
obst
,
env
.
rbs_size
);
memset
(
bl
->
id_2_memop_antic
,
0
,
env
.
rbs_size
*
sizeof
(
bl
->
id_2_memop_antic
[
0
]));
bl
->
id_2_memop_antic
=
NEW_ARR_DZ
(
memop_t
*
,
&
env
.
obst
,
env
.
rbs_size
);
}
(
void
)
dump_block_list
;
...
...
scripts/ir_spec.py
View file @
1209ae49
...
...
@@ -234,8 +234,7 @@ class Block:
/* Create and initialize array for Phi-node construction. */
if (irg_is_constrained(irg, IR_GRAPH_CONSTRAINT_CONSTRUCTION)) {
res->attr.block.graph_arr = NEW_ARR_D(ir_node *, get_irg_obstack(irg), irg->n_loc);
memset(res->attr.block.graph_arr, 0, irg->n_loc * sizeof(ir_node*));
res->attr.block.graph_arr = NEW_ARR_DZ(ir_node*, get_irg_obstack(irg), irg->n_loc);
}
'''
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment