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
941554fd
Commit
941554fd
authored
Jul 04, 2006
by
Christian Würdig
Browse files
fixed Set emitter: clear target after compare
parent
5c025092
Changes
1
Hide whitespace changes
Inline
Side-by-side
ir/be/ia32/ia32_emitter.c
View file @
941554fd
...
...
@@ -641,9 +641,8 @@ const char *ia32_emit_am(const ir_node *n, ia32_emit_env_t *env) {
if
(
had_output
)
obstack_printf
(
obst
,
"] "
);
size
=
obstack_object_size
(
obst
);
s
=
obstack_finish
(
obst
);
s
[
size
-
1
]
=
'\0'
;
obstack_1grow
(
obst
,
'\0'
);
s
=
obstack_finish
(
obst
);
return
s
;
}
...
...
@@ -1091,17 +1090,6 @@ static void Set_emitter(ir_node *irn, ia32_emit_env_t *env) {
instr
=
"sub"
;
}
/* in case of a PsiCondSet use mov because it doesn't affect the eflags */
if
(
is_ia32_PsiCondSet
(
irn
))
{
snprintf
(
cmd_buf
,
SNPRINTF_BUF_LEN
,
"mov %%%s, 0"
,
arch_register_get_name
(
out
));
}
else
{
snprintf
(
cmd_buf
,
SNPRINTF_BUF_LEN
,
"%s %%%s, %%%s"
,
instr
,
arch_register_get_name
(
out
),
arch_register_get_name
(
out
));
}
snprintf
(
cmnt_buf
,
SNPRINTF_BUF_LEN
,
"/* clear target as set modifies only lower 8 bit */"
);
IA32_DO_EMIT
(
irn
);
if
(
is_ia32_CmpSet
(
irn
))
{
lc_esnprintf
(
arg_env
,
cmd_buf
,
SNPRINTF_BUF_LEN
,
"cmp %s"
,
ia32_emit_binop
(
irn
,
env
));
}
...
...
@@ -1118,6 +1106,11 @@ static void Set_emitter(ir_node *irn, ia32_emit_env_t *env) {
snprintf
(
cmnt_buf
,
SNPRINTF_BUF_LEN
,
"/* calculate Psi condition */"
);
IA32_DO_EMIT
(
irn
);
/* use mov to clear target because it doesn't affect the eflags */
snprintf
(
cmd_buf
,
SNPRINTF_BUF_LEN
,
"mov %%%s, 0"
,
arch_register_get_name
(
out
));
snprintf
(
cmnt_buf
,
SNPRINTF_BUF_LEN
,
"/* clear target as set modifies only lower 8 bit */"
);
IA32_DO_EMIT
(
irn
);
snprintf
(
cmd_buf
,
SNPRINTF_BUF_LEN
,
"set%s %%%s"
,
cmp_suffix
,
reg8bit
);
snprintf
(
cmnt_buf
,
SNPRINTF_BUF_LEN
,
"/* set 1 iff true, 0 otherweise */"
);
IA32_DO_EMIT
(
irn
);
...
...
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