|
GCC Middle and Back End API Reference
|

Data Fields | |
| struct temp_slot * | next |
| struct temp_slot * | prev |
| rtx | slot |
| HOST_WIDE_INT | size |
| tree | type |
| unsigned int | align |
| char | in_use |
| int | level |
| HOST_WIDE_INT | base_offset |
| HOST_WIDE_INT | full_size |
In order to evaluate some expressions, such as function calls returning
structures in memory, we need to temporarily allocate stack locations.
We record each allocated temporary in the following structure.
Associated with each temporary slot is a nesting level. When we pop up
one level, all temporaries associated with the previous level are freed.
Normally, all temporaries are freed after the execution of the statement
in which they were created. However, if we are inside a ({...}) grouping,
the result may be in a temporary and hence must be preserved. If the
result could be in a temporary, we preserve it if we can determine which
one it is in. If we cannot determine which temporary may contain the
result, all temporaries are preserved. A temporary is preserved by
pretending it was allocated at the previous nesting level. | unsigned int temp_slot::align |
Referenced by assign_stack_temp_for_type().
| HOST_WIDE_INT temp_slot::base_offset |
Referenced by assign_stack_temp_for_type(), and combine_temp_slots().
| HOST_WIDE_INT temp_slot::full_size |
Referenced by assign_stack_temp_for_type(), and combine_temp_slots().
| char temp_slot::in_use |
Referenced by assign_stack_temp_for_type(), make_slot_available(), and remove_unused_temp_slot_addresses_1().
| int temp_slot::level |
| struct temp_slot* temp_slot::next |
| struct temp_slot* temp_slot::prev |
Referenced by cut_slot_from_list(), and insert_slot_to_list().
| HOST_WIDE_INT temp_slot::size |
Referenced by assign_stack_temp_for_type(), assign_temp(), and combine_temp_slots().
| rtx temp_slot::slot |
Referenced by assign_stack_temp_for_type(), and combine_temp_slots().
| tree temp_slot::type |
Referenced by assign_stack_temp_for_type().