init.c (build_new_1): Use get_target_expr instead of save_expr.

* init.c (build_new_1): Use get_target_expr instead of save_expr.

	* g++.dg/init/new24.C: New test.

From-SVN: r127668
This commit is contained in:
Jakub Jelinek 2007-08-21 19:03:23 +02:00 committed by Jakub Jelinek
parent 2f41c1d60b
commit af9fc1dd63
4 changed files with 25 additions and 1 deletions

View file

@ -1,3 +1,7 @@
2007-08-21 Jakub Jelinek <jakub@redhat.com>
* init.c (build_new_1): Use get_target_expr instead of save_expr.
2007-08-20 Pawel Sikora <pluto@pld-linux.org>
PR c++/7302

View file

@ -1755,7 +1755,7 @@ build_new_1 (tree placement, tree type, tree nelts, tree init,
placement_expr = NULL_TREE;
else
{
placement_expr = save_expr (TREE_VALUE (placement));
placement_expr = get_target_expr (TREE_VALUE (placement));
placement = tree_cons (NULL_TREE, placement_expr, NULL_TREE);
}

View file

@ -1,5 +1,7 @@
2007-08-21 Jakub Jelinek <jakub@redhat.com>
* g++.dg/init/new24.C: New test.
PR middle-end/32912
* gcc.dg/pr32912-1.c: New test.
* gcc.dg/pr32912-2.c: New test.

View file

@ -0,0 +1,18 @@
// PR c++/33025
// { dg-do compile }
// { dg-options "-O2" }
typedef __SIZE_TYPE__ size_t;
inline void *operator new (size_t, void *p) throw () { return p; }
extern "C" void abort ();
int
main()
{
const unsigned num = 10;
unsigned *data = new unsigned[num];
unsigned *ptr = new (data) unsigned (num);
static unsigned data2[10];
unsigned *ptr2 = new (&data2[0]) unsigned (10);
return 0;
}