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
9ba38e71
Commit
9ba38e71
authored
Dec 14, 2011
by
Matthias Braun
Browse files
remove class_inheritance verifier
parent
abe1a120
Changes
3
Hide whitespace changes
Inline
Side-by-side
include/libfirm/typerep.h
View file @
9ba38e71
...
...
@@ -955,7 +955,6 @@ typedef enum {
ir_class_casts_normalized
=
2
,
/**< Class casts conform to inheritance edges. */
ir_class_casts_state_max
}
ir_class_cast_state
;
FIRM_API
const
char
*
get_class_cast_state_string
(
ir_class_cast_state
s
);
FIRM_API
void
set_irg_class_cast_state
(
ir_graph
*
irg
,
ir_class_cast_state
s
);
...
...
@@ -963,13 +962,6 @@ FIRM_API ir_class_cast_state get_irg_class_cast_state(const ir_graph *irg);
FIRM_API
void
set_irp_class_cast_state
(
ir_class_cast_state
s
);
FIRM_API
ir_class_cast_state
get_irp_class_cast_state
(
void
);
/** Verify the class cast state of an irg.
*
* Asserts if state is to high, outputs debug warning if state is to low
* and firm verbosity is set.
*/
FIRM_API
void
verify_irg_class_cast_state
(
ir_graph
*
irg
);
/**
* possible trverify() error codes
*/
...
...
ir/opt/tropt.c
View file @
9ba38e71
...
...
@@ -176,9 +176,8 @@ static void normalize_irn_class_cast(ir_node *n, void *env)
static
void
pure_normalize_irg_class_casts
(
ir_graph
*
irg
)
{
assert
(
get_irg_class_cast_state
(
irg
)
!=
ir_class_casts_any
&&
"Cannot normalize irregular casts."
);
"Cannot normalize irregular casts."
);
if
(
get_irg_class_cast_state
(
irg
)
==
ir_class_casts_normalized
)
{
verify_irg_class_cast_state
(
irg
);
return
;
}
...
...
ir/tr/tr_inheritance.c
View file @
9ba38e71
...
...
@@ -34,8 +34,6 @@
#include "irgwalk.h"
#include "irflag.h"
DEBUG_ONLY
(
static
firm_dbg_module_t
*
dbg
;)
/* ----------------------------------------------------------------------- */
/* Resolve implicit inheritance. */
/* ----------------------------------------------------------------------- */
...
...
@@ -615,89 +613,3 @@ ir_class_cast_state get_irp_class_cast_state(void)
{
return
irp
->
class_cast_state
;
}
const
char
*
get_class_cast_state_string
(
ir_class_cast_state
s
)
{
#define X(a) case a: return #a
switch
(
s
)
{
X
(
ir_class_casts_any
);
X
(
ir_class_casts_transitive
);
X
(
ir_class_casts_normalized
);
X
(
ir_class_casts_state_max
);
default:
return
"invalid class cast state"
;
}
#undef X
}
/* - State verification. ------------------------------------- */
typedef
struct
ccs_env
{
ir_class_cast_state
expected_state
;
ir_class_cast_state
worst_situation
;
}
ccs_env
;
/**
* Walker: check Casts.
*/
static
void
verify_irn_class_cast_state
(
ir_node
*
n
,
void
*
env
)
{
ccs_env
*
ccs
=
(
ccs_env
*
)
env
;
ir_class_cast_state
this_state
=
ir_class_casts_any
;
ir_type
*
fromtype
,
*
totype
;
if
(
!
is_Cast
(
n
))
return
;
fromtype
=
get_irn_typeinfo_type
(
get_Cast_op
(
n
));
totype
=
get_Cast_type
(
n
);
while
(
is_Pointer_type
(
totype
)
&&
is_Pointer_type
(
fromtype
))
{
totype
=
get_pointer_points_to_type
(
totype
);
fromtype
=
get_pointer_points_to_type
(
fromtype
);
}
if
(
!
is_Class_type
(
totype
))
return
;
if
(
is_SubClass_of
(
totype
,
fromtype
)
||
is_SubClass_of
(
fromtype
,
totype
))
{
this_state
=
ir_class_casts_transitive
;
if
((
get_class_supertype_index
(
totype
,
fromtype
)
!=
(
size_t
)
-
1
)
||
(
get_class_supertype_index
(
fromtype
,
totype
)
!=
(
size_t
)
-
1
)
||
fromtype
==
totype
)
{
this_state
=
ir_class_casts_normalized
;
}
}
if
(
!
(
this_state
>=
ccs
->
expected_state
))
{
ir_printf
(
" Node is %+F
\n
"
,
n
);
ir_printf
(
" totype %+F
\n
"
,
totype
);
ir_printf
(
" fromtype %+F
\n
"
,
fromtype
);
ir_printf
(
" this_state: %s, exp. state: %s
\n
"
,
get_class_cast_state_string
(
this_state
),
get_class_cast_state_string
(
ccs
->
expected_state
));
assert
(
this_state
>=
ccs
->
expected_state
&&
"invalid state class cast state setting in graph"
);
}
if
(
this_state
<
ccs
->
worst_situation
)
ccs
->
worst_situation
=
this_state
;
}
void
verify_irg_class_cast_state
(
ir_graph
*
irg
)
{
ccs_env
env
;
FIRM_DBG_REGISTER
(
dbg
,
"firm.tr.inheritance"
);
env
.
expected_state
=
get_irg_class_cast_state
(
irg
);
env
.
worst_situation
=
ir_class_casts_normalized
;
irg_walk_graph
(
irg
,
NULL
,
verify_irn_class_cast_state
,
&
env
);
if
((
env
.
worst_situation
>
env
.
expected_state
))
{
DB
((
dbg
,
LEVEL_1
,
"Note: class cast state is set lower than reqired "
"in graph
\n\t
%+F
\n
"
,
irg
));
DB
((
dbg
,
LEVEL_1
,
" state is %s, reqired is %s
\n
"
,
get_class_cast_state_string
(
env
.
expected_state
),
get_class_cast_state_string
(
env
.
worst_situation
)));
}
}
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