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
f1d435c6
Commit
f1d435c6
authored
Dec 02, 2015
by
yb9976
Browse files
Simplify liveness validation.
This also fixes a possible null pointer access.
parent
cb236975
Changes
1
Hide whitespace changes
Inline
Side-by-side
ir/be/beverify.c
View file @
f1d435c6
...
@@ -764,32 +764,24 @@ static const char *lv_flags_to_str(unsigned flags)
...
@@ -764,32 +764,24 @@ static const char *lv_flags_to_str(unsigned flags)
static
void
lv_check_walker
(
ir_node
*
bl
,
void
*
data
)
static
void
lv_check_walker
(
ir_node
*
bl
,
void
*
data
)
{
{
lv_walker_t
*
const
w
=
(
lv_walker_t
*
)
data
;
lv_walker_t
*
const
w
=
(
lv_walker_t
*
)
data
;
be_lv_info_t
*
const
curr
=
ir_nodehashmap_get
(
be_lv_info_t
,
&
w
->
given
->
map
,
bl
);
be_lv_info_t
*
const
curr
=
ir_nodehashmap_get
(
be_lv_info_t
,
&
w
->
given
->
map
,
bl
);
be_lv_info_t
*
const
fr
=
ir_nodehashmap_get
(
be_lv_info_t
,
&
w
->
fresh
->
map
,
bl
);
be_lv_info_t
*
const
fresh
=
ir_nodehashmap_get
(
be_lv_info_t
,
&
w
->
fresh
->
map
,
bl
);
unsigned
const
n_curr
=
curr
?
curr
->
n_members
:
0
;
if
(
!
fr
&&
curr
&&
curr
->
n_members
>
0
)
{
unsigned
const
n_fresh
=
fresh
?
fresh
->
n_members
:
0
;
ir_fprintf
(
stderr
,
"%+F liveness should be empty but current liveness contains:
\n
"
,
bl
);
if
(
n_curr
!=
n_fresh
)
{
for
(
unsigned
i
=
0
;
i
<
curr
->
n_members
;
++
i
)
{
ir_fprintf
(
stderr
,
"%+F: liveness set sizes differ. curr %d, correct %d
\n
"
,
bl
,
n_curr
,
n_fresh
);
ir_fprintf
(
stderr
,
"
\t
%+F
\n
"
,
curr
->
nodes
[
i
].
node
);
ir_fprintf
(
stderr
,
"current:
\n
"
);
for
(
unsigned
i
=
0
;
i
<
n_curr
;
++
i
)
{
be_lv_info_node_t
*
const
n
=
&
curr
->
nodes
[
i
];
ir_fprintf
(
stderr
,
"%+F %u %+F %s
\n
"
,
bl
,
i
,
n
->
node
,
lv_flags_to_str
(
n
->
flags
));
}
}
}
else
if
(
curr
)
{
unsigned
const
n_curr
=
curr
->
n_members
;
unsigned
const
n_fresh
=
fr
->
n_members
;
if
(
n_curr
!=
n_fresh
)
{
ir_fprintf
(
stderr
,
"%+F: liveness set sizes differ. curr %d, correct %d
\n
"
,
bl
,
n_curr
,
n_fresh
);
ir_fprintf
(
stderr
,
"current:
\n
"
);
for
(
unsigned
i
=
0
;
i
<
n_curr
;
++
i
)
{
be_lv_info_node_t
*
const
n
=
&
curr
->
nodes
[
i
];
ir_fprintf
(
stderr
,
"%+F %u %+F %s
\n
"
,
bl
,
i
,
n
->
node
,
lv_flags_to_str
(
n
->
flags
));
}
ir_fprintf
(
stderr
,
"correct:
\n
"
);
ir_fprintf
(
stderr
,
"correct:
\n
"
);
for
(
unsigned
i
=
0
;
i
<
n_fresh
;
++
i
)
{
for
(
unsigned
i
=
0
;
i
<
n_fresh
;
++
i
)
{
be_lv_info_node_t
*
const
n
=
&
fr
->
nodes
[
i
];
be_lv_info_node_t
*
const
n
=
&
fresh
->
nodes
[
i
];
ir_fprintf
(
stderr
,
"%+F %u %+F %s
\n
"
,
bl
,
i
,
n
->
node
,
lv_flags_to_str
(
n
->
flags
));
ir_fprintf
(
stderr
,
"%+F %u %+F %s
\n
"
,
bl
,
i
,
n
->
node
,
lv_flags_to_str
(
n
->
flags
));
}
}
}
}
}
}
}
...
...
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