http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56218



--- Comment #3 from janus at gcc dot gnu.org 2013-02-06 10:16:29 UTC ---

(In reply to comment #2)

> If I'm not missing anything, I think we should pass 'f' directly instead of

> '&f':

> 

> do_stuff (struct foo_t * & restrict f)

> {

>   if (f->a.data != 0B)

>     {

>       __builtin_free ((void *) f->a.data);

>     }

>   f->a.data = 0B;

> }





Or rather the generated code should read like this:



   if ((*f)->a.data != 0B)

     {

       __builtin_free ((void *) (*f)->a.data);

     }

   (*f)->a.data = 0B;



Once we do this correctly, it should segfault as in the CLASS version, and we

also need to add a check for (*f) != OB

Reply via email to