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
651967a8
Commit
651967a8
authored
Oct 04, 2008
by
Christoph Mallon
Browse files
Fix fehler157: Lowering Shrs was missing a Conv.
[r22469]
parent
25b7dac0
Changes
1
Hide whitespace changes
Inline
Side-by-side
ir/lower/lower_dw.c
View file @
651967a8
...
@@ -999,24 +999,25 @@ static void lower_Shrs(ir_node *node, ir_mode *mode, lower_env_t *env) {
...
@@ -999,24 +999,25 @@ static void lower_Shrs(ir_node *node, ir_mode *mode, lower_env_t *env) {
if
(
tarval_is_long
(
tv
)
&&
if
(
tarval_is_long
(
tv
)
&&
get_tarval_long
(
tv
)
>=
(
long
)
get_mode_size_bits
(
mode
))
{
get_tarval_long
(
tv
)
>=
(
long
)
get_mode_size_bits
(
mode
))
{
ir_node
*
block
=
get_nodes_block
(
node
);
ir_node
*
block
=
get_nodes_block
(
node
);
ir_node
*
left
=
get_Shrs_left
(
node
);
ir_node
*
left
=
get_Shrs_left
(
node
);
long
shf_cnt
=
get_tarval_long
(
tv
)
-
get_mode_size_bits
(
mode
);
long
shf_cnt
=
get_tarval_long
(
tv
)
-
get_mode_size_bits
(
mode
);
int
idx
=
get_irn_idx
(
left
);
ir_node
*
low
;
ir_node
*
c
;
ir_node
*
c
;
int
idx
=
get_irn_idx
(
left
);
left
=
env
->
entries
[
idx
]
->
high_word
;
left
=
env
->
entries
[
idx
]
->
high_word
;
idx
=
get_irn_idx
(
node
);
idx
=
get_irn_idx
(
node
);
if
(
shf_cnt
>
0
)
{
if
(
shf_cnt
>
0
)
{
ir_node
*
tmp
;
c
=
new_r_Const_long
(
irg
,
block
,
mode_Iu
,
shf_cnt
);
c
=
new_r_Const_long
(
irg
,
block
,
mode_Iu
,
shf_cnt
);
low
=
new_r_Shrs
(
irg
,
block
,
left
,
c
,
mode
);
tmp
=
new_r_Shrs
(
irg
,
block
,
left
,
c
,
mode
);
/* low word is expected to have mode_Iu */
env
->
entries
[
idx
]
->
low_word
=
new_r_Conv
(
irg
,
block
,
tmp
,
mode_Iu
);
}
else
{
}
else
{
env
->
entries
[
idx
]
->
low_word
=
left
;
low
=
left
;
}
/* if */
}
/* if */
/* low word is expected to have mode_Iu */
env
->
entries
[
idx
]
->
low_word
=
new_r_Conv
(
irg
,
block
,
low
,
mode_Iu
);
c
=
new_r_Const_long
(
irg
,
block
,
mode_Iu
,
get_mode_size_bits
(
mode
)
-
1
);
c
=
new_r_Const_long
(
irg
,
block
,
mode_Iu
,
get_mode_size_bits
(
mode
)
-
1
);
env
->
entries
[
idx
]
->
high_word
=
new_r_Shrs
(
irg
,
block
,
left
,
c
,
mode
);
env
->
entries
[
idx
]
->
high_word
=
new_r_Shrs
(
irg
,
block
,
left
,
c
,
mode
);
...
...
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