And it is initialized via
void
cl_target_option_save (struct cl_target_option *ptr, struct gcc_options *opts)
{
if (targetm.target_option.save)
targetm.target_option.save (ptr, opts);
ptr->x_recip_mask = opts->x_recip_mask;
ptr->x_ix86_isa_flags = opts->x_ix86_isa_flags;
ptr->x_ix86_f
I see in gtype-desc.c:
void
gt_ggc_mx_cl_target_option (void *x_p)
{
struct cl_target_option * const x = (struct cl_target_option *)x_p;
if (ggc_test_and_set_mark (x))
{
gt_ggc_m_S ((*x).x_ix86_arch_string);
gt_ggc_m_S ((*x).x_ix86_recip_name);
gt_ggc_m_S ((*x).x_ix86_tun
On Wed, Sep 16, 2015 at 10:45 AM, Richard Biener
wrote:
>> As mentioned in the PR, ix86_valid_target_attribute_tree creates
>> temporary copies of current options strings and saves *pointers* to
>> these copies with build_target_option_node. A couple of lines below,
>> these temporary copies are
On Tue, Sep 15, 2015 at 8:13 PM, Uros Bizjak wrote:
> Hello!
>
> As mentioned in the PR, ix86_valid_target_attribute_tree creates
> temporary copies of current options strings and saves *pointers* to
> these copies with build_target_option_node. A couple of lines below,
> these temporary copies ar
Hello!
As mentioned in the PR, ix86_valid_target_attribute_tree creates
temporary copies of current options strings and saves *pointers* to
these copies with build_target_option_node. A couple of lines below,
these temporary copies are freed, leaving dangling pointers in the
saved structure.
Use