This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug libstdc++/29286] [4.0/4.1/4.2/4.3 Regression] placement new does not change the dynamic type as it should



------- Comment #160 from rguenther at suse dot de  2007-05-27 14:57 -------
Subject: Re:  [4.0/4.1/4.2/4.3 Regression] placement
 new does not change the dynamic type as it should

On Sat, 25 May 2007, ian at airs dot com wrote:

> ------- Comment #159 from ian at airs dot com  2007-05-25 23:21 -------
> Created an attachment (id=13613)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=13613&action=view)
>  --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=13613&action=view)
> Patch
> 
> This version of the patch is based on some code from Daniel Berlin.  Here we
> determine which pointers can potentially be associated with a placement new. 
> We disable TBAA specifically for those pointers.
> 
> I'm not 100% confident that this patch always does the right thing.  But it
> does work for the test cases I tried.
> 
> Richi, I'd be interested in results you get from your performance tests.

Please - this patch doesn't fix FreePOOMA nor does it fix the runtime
testcase I posted here before.  We still have

<bb 3>:
  l_7 = (int *) p_6(D);
  # SMT.31_21 = VDEF <SMT.31_18>
  *l_7 = 0;
  <<<change_dynamic_type (long int *) p_6(D))>>>
  __p_14 = p_6(D);
  f_10 = (long int *) __p_14;
  # SMT.30_22 = VDEF <SMT.30_17>
  *f_10 = -1;

the store to *f_10 needs to alias the store to *l_7.  Can you just
add the runtime testcase to your patches and make sure at least that
one is working?

Thanks,
Richard.


-- 


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]