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
1cb93250
Commit
1cb93250
authored
Jan 08, 2014
by
Christoph Mallon
Browse files
ia32: Add and use helper function set_frame_addr().
parent
a2f0f545
Changes
1
Show whitespace changes
Inline
Side-by-side
ir/be/ia32/ia32_address_mode.c
View file @
1cb93250
...
...
@@ -255,6 +255,15 @@ static bool eat_shl(ia32_address_t *addr, ir_node *node)
return
true
;
}
static
void
set_frame_addr
(
ia32_address_t
*
const
addr
,
ir_node
*
const
frame
)
{
assert
(
!
addr
->
base
);
assert
(
!
addr
->
frame_entity
);
addr
->
base
=
be_get_FrameAddr_frame
(
frame
);
addr
->
frame_entity
=
be_get_FrameAddr_entity
(
frame
);
addr
->
use_frame
=
1
;
}
void
ia32_create_address_mode
(
ia32_address_t
*
addr
,
ir_node
*
node
,
ia32_create_am_flags_t
flags
)
{
...
...
@@ -306,11 +315,7 @@ void ia32_create_address_mode(ia32_address_t *addr, ir_node *node,
eat_immediate
(
addr
,
node
,
0
);
return
;
}
else
if
(
be_is_FrameAddr
(
node
))
{
assert
(
addr
->
base
==
NULL
);
assert
(
addr
->
frame_entity
==
NULL
);
addr
->
base
=
be_get_FrameAddr_frame
(
node
);
addr
->
use_frame
=
1
;
addr
->
frame_entity
=
be_get_FrameAddr_entity
(
node
);
set_frame_addr
(
addr
,
node
);
return
;
}
else
if
(
is_Add
(
node
))
{
ir_node
*
left
=
get_Add_left
(
node
);
...
...
@@ -331,19 +336,11 @@ void ia32_create_address_mode(ia32_address_t *addr, ir_node *node,
}
if
(
left
!=
NULL
&&
be_is_FrameAddr
(
left
)
&&
!
ia32_is_non_address_mode_node
(
left
))
{
assert
(
addr
->
base
==
NULL
);
assert
(
addr
->
frame_entity
==
NULL
);
addr
->
base
=
be_get_FrameAddr_frame
(
left
);
addr
->
use_frame
=
1
;
addr
->
frame_entity
=
be_get_FrameAddr_entity
(
left
);
set_frame_addr
(
addr
,
left
);
left
=
NULL
;
}
else
if
(
right
!=
NULL
&&
be_is_FrameAddr
(
right
)
&&
!
ia32_is_non_address_mode_node
(
right
))
{
assert
(
addr
->
base
==
NULL
);
assert
(
addr
->
frame_entity
==
NULL
);
addr
->
base
=
be_get_FrameAddr_frame
(
right
);
addr
->
use_frame
=
1
;
addr
->
frame_entity
=
be_get_FrameAddr_entity
(
right
);
set_frame_addr
(
addr
,
right
);
right
=
NULL
;
}
...
...
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