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
4e809225
Commit
4e809225
authored
Nov 27, 2007
by
Matthias Braun
Browse files
factor out entity emitter and make sure @NTPOFF is displayed everywhere where needed
[r16848]
parent
472ccfce
Changes
1
Hide whitespace changes
Inline
Side-by-side
ir/be/ia32/ia32_emitter.c
View file @
4e809225
...
...
@@ -495,6 +495,23 @@ void ia32_emit_unop(const ir_node *node, int pos) {
}
}
static
void
ia32_emit_entity
(
ir_entity
*
entity
)
{
ident
*
id
;
set_entity_backend_marked
(
entity
,
1
);
id
=
get_entity_ld_ident
(
entity
);
be_emit_ident
(
id
);
if
(
get_entity_owner
(
entity
)
==
get_tls_type
())
{
if
(
get_entity_visibility
(
entity
)
==
visibility_external_allocated
)
{
be_emit_cstring
(
"@INDNTPOFF"
);
}
else
{
be_emit_cstring
(
"@NTPOFF"
);
}
}
}
/**
* Emits address mode.
*/
...
...
@@ -511,21 +528,9 @@ void ia32_emit_am(const ir_node *node) {
/* emit offset */
if
(
ent
!=
NULL
)
{
ident
*
id
;
set_entity_backend_marked
(
ent
,
1
);
id
=
get_entity_ld_ident
(
ent
);
if
(
is_ia32_am_sc_sign
(
node
))
be_emit_char
(
'-'
);
be_emit_ident
(
id
);
if
(
get_entity_owner
(
ent
)
==
get_tls_type
())
{
if
(
get_entity_visibility
(
ent
)
==
visibility_external_allocated
)
{
be_emit_cstring
(
"@INDNTPOFF"
);
}
else
{
be_emit_cstring
(
"@NTPOFF"
);
}
}
ia32_emit_entity
(
ent
);
}
if
(
offs
!=
0
)
{
...
...
@@ -1159,11 +1164,9 @@ static void emit_ia32_Immediate(const ir_node *node)
be_emit_char
(
'$'
);
if
(
attr
->
symconst
!=
NULL
)
{
ident
*
id
=
get_entity_ld_ident
(
attr
->
symconst
);
if
(
attr
->
sc_sign
)
be_emit_char
(
'-'
);
be
_emit_
id
ent
(
id
);
ia32
_emit_ent
ity
(
attr
->
symconst
);
}
if
(
attr
->
symconst
==
NULL
||
attr
->
offset
!=
0
)
{
if
(
attr
->
symconst
!=
NULL
)
{
...
...
@@ -1557,8 +1560,7 @@ static void emit_be_Call(const ir_node *node)
be_emit_cstring
(
"
\t
call "
);
if
(
ent
)
{
set_entity_backend_marked
(
ent
,
1
);
be_emit_string
(
get_entity_ld_name
(
ent
));
ia32_emit_entity
(
ent
);
}
else
{
const
arch_register_t
*
reg
=
get_in_reg
(
node
,
be_pos_Call_ptr
);
be_emit_char
(
'*'
);
...
...
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