Jeff Law <l...@redhat.com> writes:
> On 09/08/14 09:26, Richard Sandiford wrote:
>> This patch adds a destructor to target_ira_int, so that the data structures
>> it points to are freed when the parent target_globals is freed.  It fixes
>> a memory leak with non-default subtargets.
>>
>> Tested on x86_64-linux-gnu.  OK to install?
>>
>> Thanks,
>> Richard
>>
>>
>> gcc/
>>      * ira.h (ira_finish_once): Delete.
>>      * ira-int.h (target_ira_int::~target_ira_int): Declare.
>>      (target_ira_int::free_ira_costs): Likewise.
>>      (target_ira_int::free_register_move_costs): Likewise.
>>      (ira_finish_costs_once): Delete.
>>      * ira.c (free_register_move_costs): Replace with...
>>      (target_ira_int::free_register_move_costs): ...this new function.
>>      (target_ira_int::~target_ira_int): Define.
>>      (ira_init): Call free_register_move_costs as a member function rather
>>      than a global function.
>>      (ira_finish_once): Delete.
>>      * ira-costs.c (free_ira_costs): Replace with...
>>      (target_ira_int::free_ira_costs): ...this new function.
>>      (ira_init_costs): Call free_ira_costs as a member function rather
>>      than a global function.
>>      (ira_finish_costs_once): Delete.
>>      * target-globals.c (target_globals::~target_globals): Call the
>>      target_ira_int destructor.
>>      * toplev.c: Include lra.h.
>>      (finalize): Call lra_finish_once rather than ira_finish_once.
> Consider making target_ira_int a class.  OK for the trunk.
>
> jeff

I'd prefer to keep it as a struct if that's OK.  At the moment these
target structures are just collections of variables that are accessed
directly, so it doesn't really feel like a proper OO class "yet".
Also (more minor) changing it from a struct to a class would mean
updating all references to the structure, to avoid the clang warning
about mismatched tags.  There would then be some weird-looking
inconsistencies in the target-globals code.

Thanks,
Richard

Reply via email to