aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp
diff options
context:
space:
mode:
authorMark Mitchell <mmitchel@gcc.gnu.org>2001-01-04 19:28:56 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>2001-01-04 19:28:56 +0000
commit519c98068bc2ab4d0eb0ac40e75efba02468ddac (patch)
treed9dc1d4890aafa19ccc1fab2fcdc6c47c684e37e /gcc/cp
parent7ffcb17f49fb3f879043ed26dfca18efc539c0b1 (diff)
downloadgcc-519c98068bc2ab4d0eb0ac40e75efba02468ddac.zip
gcc-519c98068bc2ab4d0eb0ac40e75efba02468ddac.tar.gz
gcc-519c98068bc2ab4d0eb0ac40e75efba02468ddac.tar.bz2
call.c (build_conv): Don't use build1 for USER_CONV.
* call.c (build_conv): Don't use build1 for USER_CONV. * pt.c (tsubst_copy): Or for PREINCREMENT_EXPR and similar nodes. From-SVN: r38688
Diffstat (limited to 'gcc/cp')
-rw-r--r--gcc/cp/call.c10
-rw-r--r--gcc/cp/pt.c8
2 files changed, 13 insertions, 5 deletions
diff --git a/gcc/cp/call.c b/gcc/cp/call.c
index 3c1f9aa..0c08d18 100644
--- a/gcc/cp/call.c
+++ b/gcc/cp/call.c
@@ -605,8 +605,16 @@ build_conv (code, type, from)
enum tree_code code;
tree type, from;
{
- tree t = build1 (code, type, from);
+ tree t;
int rank = ICS_STD_RANK (from);
+
+ /* We can't use buidl1 here because CODE could be USER_CONV, which
+ takes two arguments. In that case, the caller is responsible for
+ filling in the second argument. */
+ t = make_node (code);
+ TREE_TYPE (t) = type;
+ TREE_OPERAND (t, 0) = from;
+
switch (code)
{
case PTR_CONV:
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index e838a98..ecf201a 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -6892,10 +6892,6 @@ tsubst_copy (t, args, complain, in_decl)
tsubst_copy (TREE_OPERAND (t, 0), args, complain, in_decl));
case INDIRECT_REF:
- case PREDECREMENT_EXPR:
- case PREINCREMENT_EXPR:
- case POSTDECREMENT_EXPR:
- case POSTINCREMENT_EXPR:
case NEGATE_EXPR:
case TRUTH_NOT_EXPR:
case BIT_NOT_EXPR:
@@ -6948,6 +6944,10 @@ tsubst_copy (t, args, complain, in_decl)
case SCOPE_REF:
case DOTSTAR_EXPR:
case MEMBER_REF:
+ case PREDECREMENT_EXPR:
+ case PREINCREMENT_EXPR:
+ case POSTDECREMENT_EXPR:
+ case POSTINCREMENT_EXPR:
return build_nt
(code, tsubst_copy (TREE_OPERAND (t, 0), args, complain, in_decl),
tsubst_copy (TREE_OPERAND (t, 1), args, complain, in_decl));