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
3242a8df
Commit
3242a8df
authored
Aug 13, 2007
by
Matthias Braun
Browse files
fix fehler69
[r15530]
parent
1443c538
Changes
4
Hide whitespace changes
Inline
Side-by-side
ir/be/ia32/bearch_ia32.c
View file @
3242a8df
...
...
@@ -1256,6 +1256,7 @@ static void ia32_collect_frame_entity_nodes(ir_node *node, void *data)
be_node_needs_frame_entity
(
env
,
node
,
mode
,
align
);
}
else
if
(
is_ia32_irn
(
node
)
&&
get_ia32_frame_ent
(
node
)
==
NULL
&&
is_ia32_use_frame
(
node
))
{
ir_fprintf
(
stderr
,
"H: %+F
\n
"
,
node
);
if
(
is_ia32_need_stackent
(
node
)
||
is_ia32_Load
(
node
))
{
const
ir_mode
*
mode
=
get_ia32_ls_mode
(
node
);
const
ia32_attr_t
*
attr
=
get_ia32_attr_const
(
node
);
...
...
@@ -1264,6 +1265,10 @@ static void ia32_collect_frame_entity_nodes(ir_node *node, void *data)
if
(
attr
->
data
.
need_64bit_stackent
)
{
mode
=
mode_Ls
;
}
if
(
attr
->
data
.
need_32bit_stackent
)
{
printf
(
"I was here
\n
"
);
mode
=
mode_Is
;
}
be_node_needs_frame_entity
(
env
,
node
,
mode
,
align
);
}
else
if
(
is_ia32_vfild
(
node
)
||
is_ia32_xLoad
(
node
)
||
is_ia32_vfld
(
node
))
{
...
...
ir/be/ia32/ia32_nodes_attr.h
View file @
3242a8df
...
...
@@ -129,6 +129,7 @@ struct ia32_attr_t {
unsigned
need_stackent
:
1
;
/**< Set to 1 if node need space on stack. */
unsigned
need_64bit_stackent
:
1
;
/**< needs a 64bit stack entity (see double->unsigned int conv) */
unsigned
need_32bit_stackent
:
1
;
/**< needs a 32bit stack entity */
}
data
;
int
*
out_flags
;
/**< flags for each produced value */
...
...
ir/be/ia32/ia32_optimize.c
View file @
3242a8df
...
...
@@ -1485,6 +1485,8 @@ static void optimize_am(ir_node *irn, void *env) {
}
if
(
source_possible
)
{
const
ia32_attr_t
*
attr_load
=
get_ia32_attr_const
(
load
);
ia32_attr_t
*
attr_irn
=
get_ia32_attr
(
irn
);
addr_b
=
get_irn_n
(
load
,
0
);
addr_i
=
get_irn_n
(
load
,
1
);
...
...
@@ -1496,6 +1498,10 @@ static void optimize_am(ir_node *irn, void *env) {
set_ia32_am_flavour
(
irn
,
get_ia32_am_flavour
(
load
));
set_ia32_op_type
(
irn
,
ia32_AddrModeS
);
set_ia32_frame_ent
(
irn
,
get_ia32_frame_ent
(
load
));
attr_irn
->
data
.
need_64bit_stackent
=
attr_load
->
data
.
need_64bit_stackent
;
attr_irn
->
data
.
need_32bit_stackent
=
attr_load
->
data
.
need_32bit_stackent
;
/* set ls_mode if not already present (conv nodes already have ls_mode
set) */
...
...
ir/be/ia32/ia32_transform.c
View file @
3242a8df
...
...
@@ -2191,6 +2191,10 @@ static ir_node *gen_x87_fp_to_gp(ir_node *node) {
if
(
get_ia32_ls_mode
(
fist
)
==
mode_Ls
)
{
ia32_attr_t
*
attr
=
get_ia32_attr
(
load
);
attr
->
data
.
need_64bit_stackent
=
1
;
}
else
{
ia32_attr_t
*
attr
=
get_ia32_attr
(
load
);
attr
->
data
.
need_32bit_stackent
=
1
;
ir_fprintf
(
stderr
,
"here too: %+F
\n
"
,
load
);
}
SET_IA32_ORIG_NODE
(
load
,
ia32_get_old_node_name
(
cg
,
node
));
...
...
@@ -3539,7 +3543,8 @@ static ir_node *gen_ia32_l_vfist(ir_node *node) {
long
am_offs
;
ia32_am_flavour_t
am_flav
=
ia32_B
;
new_op
=
new_rd_ia32_vfist
(
dbgi
,
irg
,
block
,
new_ptr
,
noreg
,
new_val
,
trunc_mode
,
new_mem
);
new_op
=
new_rd_ia32_vfist
(
dbgi
,
irg
,
block
,
new_ptr
,
noreg
,
new_val
,
trunc_mode
,
new_mem
);
if
((
am_offs
=
get_ia32_am_offs_int
(
node
))
!=
0
)
{
am_flav
|=
ia32_O
;
...
...
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