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
1a643e44
Commit
1a643e44
authored
Jul 08, 2016
by
Christoph Mallon
Browse files
Set the additional properties right when construction a method type.
parent
cc80f54f
Changes
18
Show whitespace changes
Inline
Side-by-side
include/libfirm/typerep.h
View file @
1a643e44
...
...
@@ -1200,7 +1200,7 @@ FIRM_API int is_Union_type(const ir_type *uni);
* The arrays for the parameter and result types are not initialized by
* the constructor.
*/
FIRM_API
ir_type
*
new_type_method
(
size_t
n_param
,
size_t
n_res
,
int
is_variadic
,
unsigned
cc_mask
);
FIRM_API
ir_type
*
new_type_method
(
size_t
n_param
,
size_t
n_res
,
int
is_variadic
,
unsigned
cc_mask
,
mtp_additional_properties
property_mask
);
/** Returns the number of parameters of this method. */
FIRM_API
size_t
get_method_n_params
(
const
ir_type
*
method
);
...
...
@@ -1224,14 +1224,6 @@ FIRM_API int is_method_variadic(ir_type const *method);
/** Returns the mask of the additional graph properties. */
FIRM_API
mtp_additional_properties
get_method_additional_properties
(
const
ir_type
*
method
);
/** Sets the mask of the additional graph properties. */
FIRM_API
void
set_method_additional_properties
(
ir_type
*
method
,
mtp_additional_properties
property_mask
);
/** Sets one additional graph property. */
FIRM_API
void
add_method_additional_properties
(
ir_type
*
method
,
mtp_additional_properties
flag
);
/**
* Calling conventions: lower 24 bits are the number of register parameters,
* upper 8 encode the calling conventions.
...
...
ir/ana/irmemory.c
View file @
1a643e44
...
...
@@ -898,8 +898,8 @@ static ir_type *clone_type_and_cache(ir_type *const tp, bool const is_variadic)
{
ir_type
*
res
=
pmap_get
(
ir_type
,
mtp_map
,
tp
);
if
(
res
==
NULL
)
{
res
=
clone_type_method
(
tp
,
is_variadic
);
add_method_additional_properties
(
res
,
mtp_property_private
);
mtp_additional_properties
const
props
=
get_method_additional_properties
(
tp
);
res
=
clone_type_method
(
tp
,
is_variadic
,
props
|
mtp_property_private
);
pmap_insert
(
mtp_map
,
tp
,
res
);
}
...
...
ir/be/arm/arm_bearch.c
View file @
1a643e44
...
...
@@ -117,7 +117,7 @@ static void handle_intrinsic(ir_node *node, void *data)
static
ir_type
*
make_divmod_type
(
ir_type
*
const
tp
)
{
ir_type
*
const
mtp
=
new_type_method
(
2
,
1
,
false
,
cc_cdecl_set
);
ir_type
*
const
mtp
=
new_type_method
(
2
,
1
,
false
,
cc_cdecl_set
,
mtp_no_property
);
set_method_param_type
(
mtp
,
0
,
tp
);
set_method_param_type
(
mtp
,
1
,
tp
);
set_method_res_type
(
mtp
,
0
,
tp
);
...
...
ir/be/arm/arm_lower64.c
View file @
1a643e44
...
...
@@ -106,7 +106,7 @@ static ir_entity *uldivmod;
static
ir_entity
*
make_divmod
(
char
const
*
const
name
,
ir_type
*
const
even
,
ir_type
*
const
odd
)
{
ir_type
*
const
mtp
=
new_type_method
(
4
,
4
,
false
,
cc_cdecl_set
);
ir_type
*
const
mtp
=
new_type_method
(
4
,
4
,
false
,
cc_cdecl_set
,
mtp_no_property
);
set_method_param_type
(
mtp
,
0
,
even
);
set_method_param_type
(
mtp
,
1
,
odd
);
set_method_param_type
(
mtp
,
2
,
even
);
...
...
ir/be/ia32/ia32_bearch.c
View file @
1a643e44
...
...
@@ -1135,7 +1135,7 @@ static void ia32_select_instructions(ir_graph *irg)
static
ir_entity
*
mcount
=
NULL
;
if
(
mcount
==
NULL
)
{
ir_type
*
tp
=
new_type_method
(
0
,
0
,
false
,
cc_cdecl_set
);
ir_type
*
tp
=
new_type_method
(
0
,
0
,
false
,
cc_cdecl_set
,
mtp_no_property
);
ident
*
id
=
new_id_from_str
(
"mcount"
);
mcount
=
new_global_entity
(
get_glob_type
(),
id
,
tp
,
ir_visibility_external
,
...
...
ir/be/ia32/ia32_emitter.c
View file @
1a643e44
...
...
@@ -1188,7 +1188,7 @@ zero_neg:
static
ir_type
*
get_thunk_type
(
void
)
{
if
(
!
thunk_type
)
{
ir_type
*
const
tp
=
new_type_method
(
0
,
1
,
false
,
cc_cdecl_set
);
ir_type
*
const
tp
=
new_type_method
(
0
,
1
,
false
,
cc_cdecl_set
,
mtp_no_property
);
set_method_res_type
(
tp
,
0
,
get_type_for_mode
(
mode_P
));
thunk_type
=
tp
;
}
...
...
ir/be/sparc/sparc_bearch.c
View file @
1a643e44
...
...
@@ -288,7 +288,7 @@ static void handle_intrinsic(ir_node *node, void *data)
static
ir_type
*
make_mod_type
(
ir_type
*
const
tp
)
{
ir_type
*
const
mtp
=
new_type_method
(
2
,
1
,
false
,
cc_cdecl_set
);
ir_type
*
const
mtp
=
new_type_method
(
2
,
1
,
false
,
cc_cdecl_set
,
mtp_no_property
);
set_method_param_type
(
mtp
,
0
,
tp
);
set_method_param_type
(
mtp
,
1
,
tp
);
set_method_res_type
(
mtp
,
0
,
tp
);
...
...
ir/be/sparc/sparc_stackframe.c
View file @
1a643e44
...
...
@@ -161,7 +161,8 @@ bool sparc_variadic_fixups(ir_graph *irg, calling_convention_t *cconv)
size_t
const
n_ress
=
get_method_n_ress
(
mtp
);
size_t
const
new_n_params
=
n_params
+
(
SPARC_N_PARAM_REGS
-
cconv
->
n_param_regs
);
unsigned
const
cc_mask
=
get_method_calling_convention
(
mtp
);
ir_type
*
const
new_mtp
=
new_type_method
(
new_n_params
,
n_ress
,
true
,
cc_mask
);
mtp_additional_properties
const
props
=
get_method_additional_properties
(
mtp
);
ir_type
*
const
new_mtp
=
new_type_method
(
new_n_params
,
n_ress
,
true
,
cc_mask
,
props
);
type_dbg_info
*
const
dbgi
=
get_type_dbg_info
(
mtp
);
set_type_dbg_info
(
new_mtp
,
dbgi
);
...
...
@@ -182,7 +183,6 @@ bool sparc_variadic_fixups(ir_graph *irg, calling_convention_t *cconv)
new_parameter_entity
(
frame_type
,
i
,
gp_reg_type
);
}
copy_method_properties
(
new_mtp
,
mtp
);
set_higher_type
(
new_mtp
,
mtp
);
set_entity_type
(
entity
,
new_mtp
);
...
...
ir/ir/irio.c
View file @
1a643e44
...
...
@@ -1634,7 +1634,7 @@ static void read_type(read_env_t *env)
size_t
const
nparams
=
read_size_t
(
env
);
size_t
const
nresults
=
read_size_t
(
env
);
bool
const
is_variadic
=
read_long
(
env
);
type
=
new_type_method
(
nparams
,
nresults
,
is_variadic
,
callingconv
);
type
=
new_type_method
(
nparams
,
nresults
,
is_variadic
,
callingconv
,
addprops
);
for
(
size_t
i
=
0
;
i
<
nparams
;
i
++
)
{
long
ptypenr
=
read_long
(
env
);
...
...
@@ -1649,7 +1649,6 @@ static void read_type(read_env_t *env)
set_method_res_type
(
type
,
i
,
restype
);
}
set_method_additional_properties
(
type
,
addprops
);
goto
finish_type
;
}
...
...
ir/ir/irprofile.c
View file @
1a643e44
...
...
@@ -152,7 +152,7 @@ static void add_constructor(ir_entity *method)
static
ir_entity
*
get_init_firmprof_ref
(
void
)
{
ident
*
const
init_name
=
new_id_from_str
(
"__init_firmprof"
);
ir_type
*
const
init_type
=
new_type_method
(
3
,
0
,
false
,
cc_cdecl_set
);
ir_type
*
const
init_type
=
new_type_method
(
3
,
0
,
false
,
cc_cdecl_set
,
mtp_no_property
);
ir_type
*
const
uint
=
get_type_for_mode
(
mode_Iu
);
ir_type
*
const
uintptr
=
new_type_pointer
(
uint
);
ir_type
*
const
string
=
new_type_pointer
(
get_type_for_mode
(
mode_Bs
));
...
...
@@ -177,7 +177,7 @@ static ir_graph *gen_initializer_irg(ir_entity *ent_filename, ir_entity *bblock_
{
ident
*
const
name
=
new_id_from_str
(
"__firmprof_initializer"
);
ir_type
*
const
owner
=
get_glob_type
();
ir_type
*
const
type
=
new_type_method
(
0
,
0
,
false
,
cc_cdecl_set
);
ir_type
*
const
type
=
new_type_method
(
0
,
0
,
false
,
cc_cdecl_set
,
mtp_no_property
);
ir_entity
*
const
ent
=
new_global_entity
(
owner
,
name
,
type
,
ir_visibility_local
,
IR_LINKAGE_DEFAULT
);
ir_graph
*
const
irg
=
new_ir_graph
(
ent
,
0
);
...
...
ir/lower/lower_builtins.c
View file @
1a643e44
...
...
@@ -95,7 +95,7 @@ static void widen_builtin(ir_node *node)
ir_type
*
new_arg1
=
get_type_for_mode
(
target_mode
);
ir_type
*
new_result
=
get_method_res_type
(
mtp
,
0
);
ir_type
*
new_type
=
new_type_method
(
1
,
1
,
false
,
cc_cdecl_set
);
ir_type
*
new_type
=
new_type_method
(
1
,
1
,
false
,
cc_cdecl_set
,
mtp_no_property
);
set_method_param_type
(
new_type
,
0
,
new_arg1
);
set_method_res_type
(
new_type
,
0
,
new_result
);
set_Builtin_type
(
node
,
new_type
);
...
...
ir/lower/lower_calls.c
View file @
1a643e44
...
...
@@ -183,9 +183,14 @@ static ir_type *lower_mtp(lowering_env_t const *const env, ir_type *mtp)
if
(
nn_params
>
n_params
)
cconv
|=
cc_compound_ret
;
mtp_additional_properties
mtp_properties
=
get_method_additional_properties
(
mtp
);
/* after lowering the call is not pure anymore, since it writes to the
* memory for the return value passed to it */
mtp_properties
&=
~
(
mtp_property_no_write
|
mtp_property_pure
);
/* create the new type */
bool
const
is_variadic
=
is_method_variadic
(
mtp
);
lowered
=
new_type_method
(
nn_params
,
nn_ress
,
is_variadic
,
cconv
);
lowered
=
new_type_method
(
nn_params
,
nn_ress
,
is_variadic
,
cconv
,
mtp_properties
);
set_type_dbg_info
(
lowered
,
get_type_dbg_info
(
mtp
));
/* fill it */
...
...
@@ -194,12 +199,6 @@ static ir_type *lower_mtp(lowering_env_t const *const env, ir_type *mtp)
for
(
size_t
i
=
0
;
i
<
nn_ress
;
++
i
)
set_method_res_type
(
lowered
,
i
,
results
[
i
]);
mtp_additional_properties
mtp_properties
=
get_method_additional_properties
(
mtp
);
/* after lowering the call is not pure anymore, since it writes to the
* memory for the return value passed to it */
mtp_properties
&=
~
(
mtp_property_no_write
|
mtp_property_pure
);
set_method_additional_properties
(
lowered
,
mtp_properties
);
/* associate the lowered type with the original one for easier access */
set_higher_type
(
lowered
,
mtp
);
pmap_insert
(
lowered_mtps
,
mtp
,
lowered
);
...
...
ir/lower/lower_copyb.c
View file @
1a643e44
...
...
@@ -92,7 +92,7 @@ static void lower_small_copyb_node(ir_node *irn)
static
ir_type
*
get_memcpy_methodtype
(
void
)
{
ir_type
*
tp
=
new_type_method
(
3
,
1
,
false
,
cc_cdecl_set
);
ir_type
*
tp
=
new_type_method
(
3
,
1
,
false
,
cc_cdecl_set
,
mtp_no_property
);
ir_mode
*
size_t_mode
=
get_ir_mode
(
native_mode_bytes
);
set_method_param_type
(
tp
,
0
,
get_type_for_mode
(
mode_P
));
...
...
ir/lower/lower_dw.c
View file @
1a643e44
...
...
@@ -149,7 +149,7 @@ static ir_type *get_conv_type(ir_mode *imode, ir_mode *omode)
n_res
=
2
;
/* create a new method type */
mtd
=
new_type_method
(
n_param
,
n_res
,
false
,
cc_cdecl_set
);
mtd
=
new_type_method
(
n_param
,
n_res
,
false
,
cc_cdecl_set
,
mtp_no_property
);
/* set param types and result types */
n_param
=
0
;
...
...
@@ -1573,7 +1573,8 @@ static ir_type *lower_mtp(ir_type *mtp)
bool
const
is_variadic
=
is_method_variadic
(
mtp
);
unsigned
const
cc_mask
=
get_method_calling_convention
(
mtp
);
res
=
new_type_method
(
n_param
,
n_res
,
is_variadic
,
cc_mask
);
mtp_additional_properties
const
props
=
get_method_additional_properties
(
mtp
);
res
=
new_type_method
(
n_param
,
n_res
,
is_variadic
,
cc_mask
,
props
);
set_type_dbg_info
(
res
,
get_type_dbg_info
(
mtp
));
/* set param types and result types */
...
...
@@ -1624,8 +1625,6 @@ static ir_type *lower_mtp(ir_type *mtp)
set_method_res_type
(
res
,
n_res
++
,
tp
);
}
copy_method_properties
(
res
,
mtp
);
set_higher_type
(
res
,
mtp
);
set_type_link
(
res
,
mtp
);
...
...
@@ -2115,15 +2114,14 @@ static ir_type *lower_Builtin_type(pmap *const type_map, ir_type *const mtp, ir_
}
unsigned
const
cc_mask
=
get_method_calling_convention
(
mtp
);
res
=
new_type_method
(
n_params
,
n_results
,
false
,
cc_mask
);
mtp_additional_properties
const
props
=
get_method_additional_properties
(
mtp
);
res
=
new_type_method
(
n_params
,
n_results
,
false
,
cc_mask
,
props
);
set_type_dbg_info
(
res
,
get_type_dbg_info
(
mtp
));
/* set param types and result types */
lower_types_builtin
(
n_params
,
res
,
mtp
,
tp_s_l
,
tp_u
,
&
get_method_param_type
,
&
set_method_param_type
);
lower_types_builtin
(
n_results
,
res
,
mtp
,
tp_s_l
,
tp_u
,
&
get_method_res_type
,
&
set_method_res_type
);
copy_method_properties
(
res
,
mtp
);
pmap_insert
(
type_map
,
mtp
,
res
);
return
res
;
}
...
...
@@ -2589,7 +2587,7 @@ static int lower_mux_cb(ir_node *mux)
static
ir_type
*
make_type_4_2
(
ir_type
*
const
even
,
ir_type
*
const
odd
)
{
ir_type
*
const
tp
=
new_type_method
(
4
,
2
,
false
,
cc_cdecl_set
);
ir_type
*
const
tp
=
new_type_method
(
4
,
2
,
false
,
cc_cdecl_set
,
mtp_no_property
);
set_method_param_type
(
tp
,
0
,
even
);
set_method_param_type
(
tp
,
1
,
odd
);
set_method_param_type
(
tp
,
2
,
even
);
...
...
@@ -2601,7 +2599,7 @@ static ir_type *make_type_4_2(ir_type *const even, ir_type *const odd)
static
ir_type
*
make_type_2_2
(
ir_type
*
const
even
,
ir_type
*
const
odd
)
{
ir_type
*
const
tp
=
new_type_method
(
2
,
2
,
false
,
cc_cdecl_set
);
ir_type
*
const
tp
=
new_type_method
(
2
,
2
,
false
,
cc_cdecl_set
,
mtp_no_property
);
set_method_param_type
(
tp
,
0
,
even
);
set_method_param_type
(
tp
,
1
,
odd
);
set_method_res_type
(
tp
,
0
,
even
);
...
...
ir/lower/lower_softfloat.c
View file @
1a643e44
...
...
@@ -331,7 +331,8 @@ static ir_type *lower_method_type(ir_type *mtp)
size_t
const
n_res
=
get_method_n_ress
(
mtp
);
bool
const
is_variadic
=
is_method_variadic
(
mtp
);
unsigned
const
cc_mask
=
get_method_calling_convention
(
mtp
);
res
=
new_type_method
(
n_param
,
n_res
,
is_variadic
,
cc_mask
);
mtp_additional_properties
const
props
=
get_method_additional_properties
(
mtp
);
res
=
new_type_method
(
n_param
,
n_res
,
is_variadic
,
cc_mask
,
props
);
/* set param types and result types */
for
(
size_t
i
=
0
;
i
<
n_param
;
++
i
)
{
...
...
@@ -355,8 +356,6 @@ static ir_type *lower_method_type(ir_type *mtp)
set_method_res_type
(
res
,
i
,
rtp
);
}
copy_method_properties
(
res
,
mtp
);
set_higher_type
(
res
,
mtp
);
pmap_insert
(
lowered_type
,
mtp
,
res
);
...
...
@@ -766,7 +765,7 @@ static void make_binop_type(ir_type **const memoized, ir_type *const left,
ir_type
*
const
right
,
ir_type
*
const
res
)
{
if
(
!*
memoized
)
{
ir_type
*
const
type
=
*
memoized
=
new_type_method
(
2
,
1
,
false
,
cc_cdecl_set
);
ir_type
*
const
type
=
*
memoized
=
new_type_method
(
2
,
1
,
false
,
cc_cdecl_set
,
mtp_no_property
);
set_method_param_type
(
type
,
0
,
left
);
set_method_param_type
(
type
,
1
,
right
);
set_method_res_type
(
type
,
0
,
res
);
...
...
@@ -777,7 +776,7 @@ static void make_unop_type(ir_type **const memoized, ir_type *const op,
ir_type
*
const
res
)
{
if
(
!*
memoized
)
{
ir_type
*
const
type
=
*
memoized
=
new_type_method
(
1
,
1
,
false
,
cc_cdecl_set
);
ir_type
*
const
type
=
*
memoized
=
new_type_method
(
1
,
1
,
false
,
cc_cdecl_set
,
mtp_no_property
);
set_method_param_type
(
type
,
0
,
op
);
set_method_res_type
(
type
,
0
,
res
);
}
...
...
ir/opt/proc_cloning.c
View file @
1a643e44
...
...
@@ -423,7 +423,7 @@ static void change_entity_type(const quadruple_t *q, ir_entity *ent)
/* Create the new type for our clone. It must have one parameter
less then the original.*/
ir_type
*
const
new_mtp
=
new_type_method
(
n_params
-
1
,
n_ress
,
false
,
cc_cdecl_set
);
ir_type
*
const
new_mtp
=
new_type_method
(
n_params
-
1
,
n_ress
,
false
,
cc_cdecl_set
,
mtp_no_property
);
/* We must set the type of the methods parameters.*/
for
(
size_t
i
=
0
,
j
=
0
;
i
<
n_params
;
++
i
)
{
...
...
ir/tr/type.c
View file @
1a643e44
...
...
@@ -519,7 +519,7 @@ int (is_Struct_type)(const ir_type *strct)
return
is_struct_type_
(
strct
);
}
ir_type
*
new_type_method
(
size_t
const
n_param
,
size_t
const
n_res
,
int
const
is_variadic
,
unsigned
const
cc_mask
)
ir_type
*
new_type_method
(
size_t
const
n_param
,
size_t
const
n_res
,
int
const
is_variadic
,
unsigned
const
cc_mask
,
mtp_additional_properties
const
property_mask
)
{
ir_type
*
res
=
new_type
(
tpo_method
,
sizeof
(
method_attr
),
mode_P
);
res
->
flags
|=
tf_layout_fixed
;
...
...
@@ -530,13 +530,13 @@ ir_type *new_type_method(size_t const n_param, size_t const n_res, int const is_
res
->
attr
.
method
.
res_type
=
XMALLOCNZ
(
ir_type
*
,
n_res
);
res
->
attr
.
method
.
variadic
=
is_variadic
;
res
->
attr
.
method
.
irg_calling_conv
=
cc_mask
;
res
->
attr
.
method
.
properties
=
mtp_no_
property
;
res
->
attr
.
method
.
properties
=
property
_mask
;
set_type_alignment
(
res
,
1
);
hook_new_type
(
res
);
return
res
;
}
ir_type
*
clone_type_method
(
ir_type
*
const
tp
,
bool
const
is_variadic
)
ir_type
*
clone_type_method
(
ir_type
*
const
tp
,
bool
const
is_variadic
,
mtp_additional_properties
const
property_mask
)
{
assert
(
is_Method_type
(
tp
));
ir_mode
*
mode
=
tp
->
mode
;
...
...
@@ -556,7 +556,7 @@ ir_type *clone_type_method(ir_type *const tp, bool const is_variadic)
res
->
attr
.
method
.
res_type
=
XMALLOCN
(
ir_type
*
,
n_res
);
MEMCPY
(
res
->
attr
.
method
.
res_type
,
tp
->
attr
.
method
.
res_type
,
n_res
);
res
->
attr
.
method
.
variadic
=
is_variadic
;
res
->
attr
.
method
.
properties
=
tp
->
attr
.
method
.
propert
ies
;
res
->
attr
.
method
.
properties
=
propert
y_mask
;
res
->
attr
.
method
.
irg_calling_conv
=
tp
->
attr
.
method
.
irg_calling_conv
;
set_type_alignment
(
res
,
get_type_alignment
(
tp
));
hook_new_type
(
res
);
...
...
@@ -621,17 +621,6 @@ mtp_additional_properties (get_method_additional_properties)(const ir_type *meth
return
get_method_additional_properties_
(
method
);
}
void
(
set_method_additional_properties
)(
ir_type
*
method
,
mtp_additional_properties
mask
)
{
set_method_additional_properties_
(
method
,
mask
);
}
void
(
add_method_additional_properties
)(
ir_type
*
method
,
mtp_additional_properties
flag
)
{
add_method_additional_properties_
(
method
,
flag
);
}
unsigned
(
get_method_calling_convention
)(
const
ir_type
*
method
)
{
return
get_method_calling_convention_
(
method
);
...
...
ir/tr/type_t.h
View file @
1a643e44
...
...
@@ -46,8 +46,6 @@
#define get_method_n_params(method) get_method_n_params_(method)
#define get_method_n_ress(method) get_method_n_ress_(method)
#define get_method_additional_properties(method) get_method_additional_properties_(method)
#define set_method_additional_properties(method, mask) set_method_additional_properties_(method, mask)
#define add_method_additional_properties(method, flag) add_method_additional_properties_(method, flag)
#define get_method_calling_convention(method) get_method_calling_convention_(method)
/** Compound type attributes. */
...
...
@@ -159,10 +157,11 @@ void ir_finish_type(ir_prog *irp);
*
* @param tp the method type to clone.
* @param is_variadic whether the cloned type is variadic
* @param property_mask additional method properties for the cloned type
*
* @return the cloned method type.
*/
ir_type
*
clone_type_method
(
ir_type
*
tp
,
bool
is_variadic
);
ir_type
*
clone_type_method
(
ir_type
*
tp
,
bool
is_variadic
,
mtp_additional_properties
property_mask
);
extern
ir_visited_t
firm_type_visited
;
...
...
@@ -341,18 +340,6 @@ static inline mtp_additional_properties get_method_additional_properties_(const
return
method
->
attr
.
method
.
properties
;
}
static
inline
void
set_method_additional_properties_
(
ir_type
*
method
,
mtp_additional_properties
properties
)
{
assert
(
is_Method_type
(
method
));
method
->
attr
.
method
.
properties
=
properties
;
}
static
inline
void
add_method_additional_properties_
(
ir_type
*
method
,
mtp_additional_properties
properties
)
{
assert
(
is_Method_type
(
method
));
method
->
attr
.
method
.
properties
|=
properties
;
}
static
inline
unsigned
get_method_calling_convention_
(
const
ir_type
*
method
)
{
assert
(
is_Method_type
(
method
));
...
...
@@ -372,9 +359,4 @@ static inline bool is_aggregate_type(const ir_type *type)
ir_type
*
new_type_segment
(
ident
*
name
,
type_flags
flags
);
static
inline
void
copy_method_properties
(
ir_type
*
const
dst
,
ir_type
const
*
const
src
)
{
set_method_additional_properties
(
dst
,
get_method_additional_properties
(
src
));
}
#endif
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