aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>1999-05-22 11:24:43 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>1999-05-22 11:24:43 +0000
commit9dd03dd98bed4ef1f04d7729ef4fdb80a1d244c9 (patch)
treeaaf0de4a6e20d9c74522faf9b120363e516411ba
parent13bd191d0e2519240def60469da8764e4917ccff (diff)
downloadgcc-9dd03dd98bed4ef1f04d7729ef4fdb80a1d244c9.zip
gcc-9dd03dd98bed4ef1f04d7729ef4fdb80a1d244c9.tar.gz
gcc-9dd03dd98bed4ef1f04d7729ef4fdb80a1d244c9.tar.bz2
* tree.c (mapcar): Handle LVALUE_EXPR.
From-SVN: r27101
-rw-r--r--gcc/cp/ChangeLog2
-rw-r--r--gcc/cp/tree.c1
-rw-r--r--gcc/testsuite/g++.old-deja/g++.other/new4.C10
3 files changed, 13 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 39cec74..f0b989c 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,5 +1,7 @@
1999-05-22 Mark Mitchell <mark@codesourcery.com>
+ * tree.c (mapcar): Handle LVALUE_EXPR.
+
* cp-tree.h (cplus_expand_constant): Declare.
* cvt.c (convert_to_pointer): Expand PTRMEM_CSTs when they're
converted from one pointer-to-object type to another.
diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c
index 9d77217..1d1f205 100644
--- a/gcc/cp/tree.c
+++ b/gcc/cp/tree.c
@@ -1927,6 +1927,7 @@ mapcar (t, func)
case NOP_EXPR:
case COMPONENT_REF:
case CLEANUP_POINT_EXPR:
+ case NON_LVALUE_EXPR:
t = copy_node (t);
TREE_TYPE (t) = mapcar (TREE_TYPE (t), func);
TREE_OPERAND (t, 0) = mapcar (TREE_OPERAND (t, 0), func);
diff --git a/gcc/testsuite/g++.old-deja/g++.other/new4.C b/gcc/testsuite/g++.old-deja/g++.other/new4.C
new file mode 100644
index 0000000..b9931b1
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.other/new4.C
@@ -0,0 +1,10 @@
+// Build don't link:
+// Origin: Mark Mitchell <mark@codesourcery.com>
+
+struct S {
+ S();
+
+ virtual int f() {
+ new S[+f()];
+ }
+};