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:
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:
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));