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
ff35b372
Commit
ff35b372
authored
May 27, 2008
by
Matthias Braun
Browse files
do an upconv instead of panic when we do <32bit right shifts
[r19783]
parent
05f6a4d2
Changes
1
Hide whitespace changes
Inline
Side-by-side
ir/be/ia32/ia32_transform.c
View file @
ff35b372
...
...
@@ -760,7 +760,6 @@ ir_node *ia32_skip_downconv(ir_node *node) {
return
node
;
}
#if 0
static
ir_node
*
create_upconv
(
ir_node
*
node
,
ir_node
*
orig_node
)
{
ir_mode
*
mode
=
get_irn_mode
(
node
);
...
...
@@ -778,7 +777,6 @@ static ir_node *create_upconv(ir_node *node, ir_node *orig_node)
return
create_I2I_Conv
(
mode
,
tgt_mode
,
dbgi
,
block
,
node
,
orig_node
);
}
#endif
/**
* matches operands of a node into ia32 addressing/operand modes. This covers
...
...
@@ -1085,11 +1083,13 @@ static ir_node *gen_shift_binop(ir_node *node, ir_node *op1, ir_node *op2,
assert
((
flags
&
~
(
match_mode_neutral
|
match_immediate
))
==
0
);
if
(
flags
&
match_mode_neutral
)
{
op1
=
ia32_skip_downconv
(
op1
);
op1
=
ia32_skip_downconv
(
op1
);
new_op1
=
be_transform_node
(
op1
);
}
else
if
(
get_mode_size_bits
(
get_irn_mode
(
node
))
!=
32
)
{
panic
(
"right shifting of non-32bit values not supported, yet"
);
new_op1
=
create_upconv
(
op1
,
node
);
}
else
{
new_op1
=
be_transform_node
(
op1
);
}
new_op1
=
be_transform_node
(
op1
);
/* the shift amount can be any mode that is bigger than 5 bits, since all
* other bits are ignored anyway */
...
...
Write
Preview
Supports
Markdown
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