This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug libstdc++/29286] [4.0/4.1/4.2/4.3 Regression] placement new does not change the dynamic type as it should
- From: "rguenther at suse dot de" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 27 May 2007 14:57:22 -0000
- Subject: [Bug libstdc++/29286] [4.0/4.1/4.2/4.3 Regression] placement new does not change the dynamic type as it should
- References: <bug-29286-10053@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- 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