This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug libstdc++/29286] [4.2 Regression] placement new does not change the dynamic type as it should
- From: "rguenth at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 29 Sep 2006 16:24:53 -0000
- Subject: [Bug libstdc++/29286] [4.2 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 #11 from rguenth at gcc dot gnu dot org 2006-09-29 16:24 -------
I don't really know. But for this issue I would like to introduce middle-end
no-op builtins __builtin_clobber (void*) clobber the pointer argument alias set
like we do for malloc/free (and other calls):
int foo(void)
{
int i, *p, *q;
p = malloc(4);
*p = 0;
free(p);
q = malloc(4);
*q = 1;
i = *q;
free(q);
return i;
}
<bb 2>:
# HEAP.4_10 = V_MAY_DEF <HEAP.4_8>;
# HEAP.5_11 = V_MAY_DEF <HEAP.5_9>;
D.1530_1 = malloc (4);
p_2 = (int *) D.1530_1;
# HEAP.4_12 = V_MAY_DEF <HEAP.4_10>;
*p_2 = 0;
# HEAP.4_13 = V_MAY_DEF <HEAP.4_12>;
# HEAP.5_14 = V_MAY_DEF <HEAP.5_11>;
free (p_2);
# HEAP.4_15 = V_MAY_DEF <HEAP.4_13>;
# HEAP.5_16 = V_MAY_DEF <HEAP.5_14>;
D.1531_3 = malloc (4);
q_4 = (int *) D.1531_3;
# HEAP.5_17 = V_MAY_DEF <HEAP.5_16>;
*q_4 = 1;
# VUSE <HEAP.5_17>;
i_5 = *q_4;
# HEAP.4_18 = V_MAY_DEF <HEAP.4_15>;
# HEAP.5_19 = V_MAY_DEF <HEAP.5_17>;
free (q_4);
D.1532_6 = i_5;
return D.1532_6;
or even just a way to add a VUSE of the pointer alias sets, or even
void * __builtin_new_object (void *p) which would do
# VUSE <p>
# HEAP.n = V_MAY_DEF <HEAP.n>
p = __builtin_new_object (p)
i.e. associate a new alias tag with the return value.
Can you benchmark the workaround in the library?
--
rguenth at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |dberlin at gcc dot gnu dot
| |org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29286