tree in_decl)
{
tree ohi = CALL_EXPR_ARG (call, 0);
- tree hi = tsubst_copy_and_build (ohi, args, complain, in_decl,
- true/*int_cst*/);
+ tree hi = tsubst_copy_and_build (ohi, args, complain, in_decl);
if (instantiation_dependent_expression_p (hi))
{
return tsubst_copy_and_build (expr,
/*args=*/NULL_TREE,
complain,
- /*in_decl=*/NULL_TREE,
- /*integral_constant_expression_p=*/true);
+ /*in_decl=*/NULL_TREE);
}
/* Instantiate the non-dependent expression EXPR. */
current class with same name. */
push_nested_namespace (ns);
fns = tsubst_expr (DECL_TI_TEMPLATE (decl), args,
- tf_warning_or_error, NULL_TREE,
- /*integral_constant_expression_p=*/false);
+ tf_warning_or_error, NULL_TREE);
pop_nested_namespace (ns);
arglist = tsubst (DECL_TI_ARGS (decl), args,
tf_warning_or_error, NULL_TREE);
get_attribute_name (t)))
{
++cp_unevaluated_operand;
- tree varid
- = tsubst_expr (TREE_PURPOSE (val), args, complain,
- in_decl, /*integral_constant_expression_p=*/false);
+ tree varid = tsubst_expr (TREE_PURPOSE (val), args, complain, in_decl);
--cp_unevaluated_operand;
tree chain = TREE_CHAIN (val);
location_t match_loc = cp_expr_loc_or_input_loc (TREE_PURPOSE (chain));
tree v = TREE_VALUE (t3);
if (TREE_CODE (v) == STRING_CST && allow_string)
continue;
- v = tsubst_expr (v, args, complain, in_decl, true);
+ v = tsubst_expr (v, args, complain, in_decl);
v = fold_non_dependent_expr (v);
if (!INTEGRAL_TYPE_P (TREE_TYPE (v))
|| (TREE_PURPOSE (t3) == score
else if (attribute_takes_identifier_p (get_attribute_name (t)))
{
tree chain
- = tsubst_expr (TREE_CHAIN (val), args, complain, in_decl,
- /*integral_constant_expression_p=*/false);
+ = tsubst_expr (TREE_CHAIN (val), args, complain, in_decl);
if (chain != TREE_CHAIN (val))
val = tree_cons (NULL_TREE, TREE_VALUE (val), chain);
}
return list;
}
else
- val = tsubst_expr (val, args, complain, in_decl,
- /*integral_constant_expression_p=*/false);
+ val = tsubst_expr (val, args, complain, in_decl);
if (val == error_mark_node)
return error_mark_node;
{
/* Build new TYPE_FIELDS. */
if (TREE_CODE (t) == STATIC_ASSERT)
- tsubst_expr (t, args, tf_warning_or_error, NULL_TREE,
- /*integral_constant_expression_p=*/true);
+ tsubst_expr (t, args, tf_warning_or_error, NULL_TREE);
else if (TREE_CODE (t) != CONST_DECL)
{
tree r;
{
if (!(complain & tf_warning))
++c_inhibit_evaluation_warnings;
- r = tsubst_expr (t, args, complain, in_decl,
- /*integral_constant_expression_p=*/true);
+ r = tsubst_expr (t, args, complain, in_decl);
if (!(complain & tf_warning))
--c_inhibit_evaluation_warnings;
}
else if (pattern == error_mark_node)
t = error_mark_node;
else if (!TYPE_P (pattern))
- t = tsubst_expr (pattern, args, complain, in_decl,
- /*integral_constant_expression_p=*/false);
+ t = tsubst_expr (pattern, args, complain, in_decl);
else
{
t = tsubst (pattern, args, complain, in_decl);
static inline tree
tsubst_fold_expr_init (tree t, tree args, tsubst_flags_t complain, tree in_decl)
{
- return tsubst_expr (FOLD_EXPR_INIT (t), args, complain, in_decl, false);
+ return tsubst_expr (FOLD_EXPR_INIT (t), args, complain, in_decl);
}
/* Expand a PACK of arguments into a grouped as left fold.
if (BASES_DIRECT (parm_pack))
return calculate_direct_bases (tsubst_expr (BASES_TYPE (parm_pack),
args, complain,
- in_decl, false),
+ in_decl),
complain);
else
return calculate_bases (tsubst_expr (BASES_TYPE (parm_pack),
- args, complain, in_decl,
- false), complain);
+ args, complain, in_decl),
+ complain);
}
else if (builtin_pack_call_p (parm_pack))
{
pattern and return a PACK_EXPANSION_*. The caller will need to
deal with that. */
if (TREE_CODE (t) == EXPR_PACK_EXPANSION)
- result = tsubst_expr (pattern, args, complain, in_decl,
- /*integral_constant_expression_p=*/false);
+ result = tsubst_expr (pattern, args, complain, in_decl);
else
result = tsubst (pattern, args, complain, in_decl);
result = make_pack_expansion (result, complain);
the body of function so as to avoid collecting live data on the
stack. */
++function_depth;
- arg = tsubst_expr (arg, DECL_TI_ARGS (fn),
- complain, NULL_TREE,
- /*integral_constant_expression_p=*/false);
+ arg = tsubst_expr (arg, DECL_TI_ARGS (fn), complain, NULL_TREE);
--function_depth;
finish_lambda_scope ();
if (DECL_HAS_DEPENDENT_EXPLICIT_SPEC_P (t))
{
tree spec = lookup_explicit_specifier (t);
- spec = tsubst_copy_and_build (spec, args, complain, in_decl,
- /*i_c_e_p=*/true);
+ spec = tsubst_copy_and_build (spec, args, complain, in_decl);
spec = build_explicit_specifier (spec, complain);
if (spec == error_mark_node)
return error_mark_node;
number of bits. */
DECL_BIT_FIELD_REPRESENTATIVE (r)
= tsubst_expr (DECL_BIT_FIELD_REPRESENTATIVE (t), args,
- complain, in_decl,
- /*integral_constant_expression_p=*/true);
+ complain, in_decl);
if (DECL_INITIAL (t))
{
/* Set up DECL_TEMPLATE_INFO so that we can get at the
bool nop = (TREE_CODE (ve) == NOP_EXPR);
if (nop)
ve = TREE_OPERAND (ve, 0);
- ve = tsubst_expr (ve, args, complain, in_decl,
- /*constant_expression_p=*/false);
+ ve = tsubst_expr (ve, args, complain, in_decl);
if (REFERENCE_REF_P (ve))
{
gcc_assert (TYPE_REF_P (type));
if (lambda_fn_in_template_p (in_decl)
|| (in_decl && TREE_CODE (in_decl) == FUNCTION_DECL
&& DECL_LOCAL_DECL_P (in_decl)))
- default_arg = tsubst_copy_and_build (default_arg, args, complain, in_decl,
- false/*constexpr*/);
+ default_arg = tsubst_copy_and_build (default_arg, args, complain, in_decl);
tree remaining_arg_types = tsubst_arg_types (TREE_CHAIN (arg_types),
args, end, complain, in_decl);
args);
expr = DEFERRED_NOEXCEPT_PATTERN (expr);
}
- new_specs = tsubst_copy_and_build
- (expr, args, complain, in_decl,
- /*integral_constant_expression_p=*/true);
+ new_specs = tsubst_copy_and_build (expr, args, complain, in_decl);
}
new_specs = build_noexcept_spec (new_specs, complain);
/* We've instantiated a template before a noexcept-specifier
{
tree max, omax = TREE_OPERAND (TYPE_MAX_VALUE (t), 0);
- max = tsubst_expr (omax, args, complain, in_decl,
- /*integral_constant_expression_p=*/false);
+ max = tsubst_expr (omax, args, complain, in_decl);
/* Fix up type of the magic NOP_EXPR with TREE_SIDE_EFFECTS if
needed. */
++cp_unevaluated_operand;
++c_inhibit_evaluation_warnings;
- type = tsubst_expr (TYPEOF_TYPE_EXPR (t), args,
- complain, in_decl,
- /*integral_constant_expression_p=*/false);
+ type = tsubst_expr (TYPEOF_TYPE_EXPR (t), args, complain, in_decl);
--cp_unevaluated_operand;
--c_inhibit_evaluation_warnings;
++c_inhibit_evaluation_warnings;
type = tsubst_copy_and_build (DECLTYPE_TYPE_EXPR (t), args,
- complain|tf_decltype, in_decl,
- /*integral_constant_expression*/false);
+ complain|tf_decltype, in_decl);
--cp_unevaluated_operand;
--c_inhibit_evaluation_warnings;
if (!init)
return NULL_TREE;
- init = tsubst_expr (init, args, complain, in_decl, false);
+ init = tsubst_expr (init, args, complain, in_decl);
tree type = TREE_TYPE (decl);
return t;
case CO_AWAIT_EXPR:
- return tsubst_expr (t, args, complain, in_decl,
- /*integral_constant_expression_p=*/false);
- break;
+ return tsubst_expr (t, args, complain, in_decl);
default:
/* We shouldn't get here, but keep going if !flag_checking. */
DECL_CONTEXT (TREE_VEC_ELT (*tp, 0)) = current_function_decl;
pushdecl (TREE_VEC_ELT (*tp, 0));
TREE_VEC_ELT (*tp, 1)
- = tsubst_expr (TREE_VEC_ELT (it, 1), args, complain, in_decl,
- /*integral_constant_expression_p=*/false);
+ = tsubst_expr (TREE_VEC_ELT (it, 1), args, complain, in_decl);
TREE_VEC_ELT (*tp, 2)
- = tsubst_expr (TREE_VEC_ELT (it, 2), args, complain, in_decl,
- /*integral_constant_expression_p=*/false);
+ = tsubst_expr (TREE_VEC_ELT (it, 2), args, complain, in_decl);
TREE_VEC_ELT (*tp, 3)
- = tsubst_expr (TREE_VEC_ELT (it, 3), args, complain, in_decl,
- /*integral_constant_expression_p=*/false);
+ = tsubst_expr (TREE_VEC_ELT (it, 3), args, complain, in_decl);
TREE_CHAIN (*tp) = NULL_TREE;
tp = &TREE_CHAIN (*tp);
}
if (TREE_CODE (decl) == TREE_LIST)
{
tree low_bound
- = tsubst_expr (TREE_PURPOSE (decl), args, complain, in_decl,
- /*integral_constant_expression_p=*/false);
- tree length = tsubst_expr (TREE_VALUE (decl), args, complain, in_decl,
- /*integral_constant_expression_p=*/false);
+ = tsubst_expr (TREE_PURPOSE (decl), args, complain, in_decl);
+ tree length = tsubst_expr (TREE_VALUE (decl), args, complain, in_decl);
tree chain = tsubst_omp_clause_decl (TREE_CHAIN (decl), args, complain,
in_decl, NULL);
if (TREE_PURPOSE (decl) == low_bound
= OMP_CLAUSE_DOACROSS_SINK_NEGATIVE (decl);
return ret;
}
- tree ret = tsubst_expr (decl, args, complain, in_decl,
- /*integral_constant_expression_p=*/false);
+ tree ret = tsubst_expr (decl, args, complain, in_decl);
/* Undo convert_from_reference tsubst_expr could have called. */
if (decl
&& REFERENCE_REF_P (ret)
if (OMP_CLAUSE_LASTPRIVATE_STMT (oc))
{
OMP_CLAUSE_LASTPRIVATE_STMT (nc) = push_stmt_list ();
- tsubst_expr (OMP_CLAUSE_LASTPRIVATE_STMT (oc), args, complain,
- in_decl, /*integral_constant_expression_p=*/false);
+ tsubst_expr (OMP_CLAUSE_LASTPRIVATE_STMT (oc), args,
+ complain, in_decl);
OMP_CLAUSE_LASTPRIVATE_STMT (nc)
= pop_stmt_list (OMP_CLAUSE_LASTPRIVATE_STMT (nc));
}
if (OMP_CLAUSE_NUM_TEAMS_LOWER_EXPR (oc))
OMP_CLAUSE_NUM_TEAMS_LOWER_EXPR (nc)
= tsubst_expr (OMP_CLAUSE_NUM_TEAMS_LOWER_EXPR (oc), args,
- complain, in_decl,
- /*integral_constant_expression_p=*/false);
+ complain, in_decl);
/* FALLTHRU */
case OMP_CLAUSE_TILE:
case OMP_CLAUSE_IF:
case OMP_CLAUSE_WAIT:
case OMP_CLAUSE_DETACH:
OMP_CLAUSE_OPERAND (nc, 0)
- = tsubst_expr (OMP_CLAUSE_OPERAND (oc, 0), args, complain,
- in_decl, /*integral_constant_expression_p=*/false);
+ = tsubst_expr (OMP_CLAUSE_OPERAND (oc, 0), args, complain, in_decl);
break;
case OMP_CLAUSE_REDUCTION:
case OMP_CLAUSE_IN_REDUCTION:
= tsubst_omp_clause_decl (OMP_CLAUSE_DECL (oc), args, complain,
in_decl, NULL);
OMP_CLAUSE_OPERAND (nc, 1)
- = tsubst_expr (OMP_CLAUSE_OPERAND (oc, 1), args, complain,
- in_decl, /*integral_constant_expression_p=*/false);
+ = tsubst_expr (OMP_CLAUSE_OPERAND (oc, 1), args, complain, in_decl);
break;
case OMP_CLAUSE_ALLOCATE:
OMP_CLAUSE_DECL (nc)
= tsubst_omp_clause_decl (OMP_CLAUSE_DECL (oc), args, complain,
in_decl, NULL);
OMP_CLAUSE_OPERAND (nc, 1)
- = tsubst_expr (OMP_CLAUSE_OPERAND (oc, 1), args, complain,
- in_decl, /*integral_constant_expression_p=*/false);
+ = tsubst_expr (OMP_CLAUSE_OPERAND (oc, 1), args, complain, in_decl);
OMP_CLAUSE_OPERAND (nc, 2)
- = tsubst_expr (OMP_CLAUSE_OPERAND (oc, 2), args, complain,
- in_decl, /*integral_constant_expression_p=*/false);
+ = tsubst_expr (OMP_CLAUSE_OPERAND (oc, 2), args, complain, in_decl);
break;
case OMP_CLAUSE_LINEAR:
OMP_CLAUSE_DECL (nc)
complain, in_decl, NULL);
else
OMP_CLAUSE_LINEAR_STEP (nc)
- = tsubst_expr (OMP_CLAUSE_LINEAR_STEP (oc), args, complain,
- in_decl,
- /*integral_constant_expression_p=*/false);
+ = tsubst_expr (OMP_CLAUSE_LINEAR_STEP (oc), args,
+ complain, in_decl);
break;
case OMP_CLAUSE_NOWAIT:
case OMP_CLAUSE_DEFAULT:
return t;
if (TREE_CODE (t) != TREE_LIST)
- return tsubst_copy_and_build (t, args, complain, in_decl,
- /*integral_constant_expression_p=*/false);
+ return tsubst_copy_and_build (t, args, complain, in_decl);
if (t == void_list_node)
return t;
static bool
tsubst_omp_for_iterator (tree t, int i, tree declv, tree &orig_declv,
tree initv, tree condv, tree incrv, tree *clauses,
- tree args, tsubst_flags_t complain, tree in_decl,
- bool integral_constant_expression_p)
+ tree args, tsubst_flags_t complain, tree in_decl)
{
#define RECUR(NODE) \
- tsubst_expr ((NODE), args, complain, in_decl, \
- integral_constant_expression_p)
+ tsubst_expr ((NODE), args, complain, in_decl)
tree decl, init, cond = NULL_TREE, incr = NULL_TREE;
bool ret = false;
processing. */
tree
-tsubst_expr (tree t, tree args, tsubst_flags_t complain, tree in_decl,
- bool integral_constant_expression_p)
+tsubst_expr (tree t, tree args, tsubst_flags_t complain, tree in_decl)
{
#define RETURN(EXP) do { r = (EXP); goto out; } while(0)
#define RECUR(NODE) \
- tsubst_expr ((NODE), args, complain, in_decl, \
- integral_constant_expression_p)
+ tsubst_expr ((NODE), args, complain, in_decl)
tree stmt, tmp;
tree r;
tree condition;
++c_inhibit_evaluation_warnings;
- condition =
- tsubst_expr (STATIC_ASSERT_CONDITION (t),
- args,
- complain, in_decl,
- /*integral_constant_expression_p=*/true);
+ condition = tsubst_expr (STATIC_ASSERT_CONDITION (t), args,
+ complain, in_decl);
--c_inhibit_evaluation_warnings;
finish_static_assert (condition,
any_range_for
|= tsubst_omp_for_iterator (t, i, declv, orig_declv, initv,
condv, incrv, &clauses, args,
- complain, in_decl,
- integral_constant_expression_p);
+ complain, in_decl);
omp_parallel_combined_clauses = NULL;
if (any_range_for)
default:
gcc_assert (!STATEMENT_CODE_P (TREE_CODE (t)));
- RETURN (tsubst_copy_and_build (t, args, complain, in_decl,
- integral_constant_expression_p));
+ RETURN (tsubst_copy_and_build (t, args, complain, in_decl));
}
RETURN (NULL_TREE);
DECL_CONTEXT (omp_in) = current_function_decl;
keep_next_level (true);
tree block = begin_omp_structured_block ();
- tsubst_expr (stmts[2], args, complain, in_decl, false);
+ tsubst_expr (stmts[2], args, complain, in_decl);
block = finish_omp_structured_block (block);
block = maybe_cleanup_point_expr_void (block);
add_decl_expr (omp_out);
DECL_CONTEXT (omp_orig) = current_function_decl;
keep_next_level (true);
tree block = begin_omp_structured_block ();
- tsubst_expr (stmts[5], args, complain, in_decl, false);
+ tsubst_expr (stmts[5], args, complain, in_decl);
block = finish_omp_structured_block (block);
block = maybe_cleanup_point_expr_void (block);
cp_walk_tree (&block, cp_remove_omp_priv_cleanup_stmt, omp_priv, NULL);
t = tsubst_qualified_id (t, args, complain, in_decl,
/*done=*/false, /*address_p=*/false);
else
- t = tsubst_copy_and_build (t, args, complain, in_decl,
- /*integral_constant_expression_p=*/false);
+ t = tsubst_copy_and_build (t, args, complain, in_decl);
return t;
}
if (PACK_EXPANSION_P (init))
init = tsubst_pack_expansion (init, args, complain, in_decl);
else
- init = tsubst_copy_and_build (init, args, complain, in_decl,
- /*constexpr*/false);
+ init = tsubst_copy_and_build (init, args, complain, in_decl);
if (init == error_mark_node)
return error_mark_node;
need another to confuse NRV (91217). */
saved = BIND_EXPR_BODY (saved);
- tsubst_expr (saved, args, complain, r, /*constexpr*/false);
+ tsubst_expr (saved, args, complain, r);
finish_lambda_function (body);
static void
tsubst_copy_and_build_call_args (tree t, tree args, tsubst_flags_t complain,
- tree in_decl,
- bool integral_constant_expression_p,
- releasing_vec &call_args)
+ tree in_decl, releasing_vec &call_args)
{
unsigned int nargs = call_expr_nargs (t);
for (unsigned int i = 0; i < nargs; ++i)
if (!PACK_EXPANSION_P (arg))
vec_safe_push (call_args,
- tsubst_copy_and_build (arg, args, complain, in_decl,
- integral_constant_expression_p));
+ tsubst_copy_and_build (arg, args, complain, in_decl));
else
{
/* Expand the pack expansion and push each entry onto CALL_ARGS. */
tsubst_copy_and_build (tree t,
tree args,
tsubst_flags_t complain,
- tree in_decl,
- bool integral_constant_expression_p)
+ tree in_decl)
{
#define RETURN(EXP) do { retval = (EXP); goto out; } while(0)
#define RECUR(NODE) \
- tsubst_copy_and_build (NODE, args, complain, in_decl, \
- integral_constant_expression_p)
+ tsubst_copy_and_build (NODE, args, complain, in_decl)
tree retval, op1;
location_t save_loc;
{
tree decl;
cp_id_kind idk;
- bool non_integral_constant_expression_p;
const char *error_msg;
if (IDENTIFIER_CONV_OP_P (t))
decl = finish_id_expression (t, decl, NULL_TREE,
&idk,
- integral_constant_expression_p,
- /*allow_non_integral_constant_expression_p=*/(cxx_dialect >= cxx11),
- &non_integral_constant_expression_p,
+ /*i_c_e_p=*/false,
+ /*allow_i_c_e_p=*/true,
+ /*non_i_c_e_p=*/nullptr,
/*template_p=*/false,
/*done=*/true,
/*address_p=*/false,
{
tree object;
tree templ = tsubst_copy_and_build (TREE_OPERAND (t, 0), args,
- complain, in_decl,
- integral_constant_expression_p);
+ complain, in_decl);
tree targs = TREE_OPERAND (t, 1);
if (targs)
if (TREE_CODE (t) == CAST_EXPR)
tcomplain |= tf_tst_ok;
type = tsubst (TREE_TYPE (t), args, tcomplain, in_decl);
- if (integral_constant_expression_p
- && !cast_valid_in_integral_constant_expression_p (type))
- {
- if (complain & tf_error)
- error ("a cast to a type other than an integral or "
- "enumeration type cannot appear in a constant-expression");
- RETURN (error_mark_node);
- }
op = RECUR (TREE_OPERAND (t, 0));
tree c = TREE_OPERAND (t, 1);
releasing_vec index_exp_list;
tsubst_copy_and_build_call_args (c, args, complain, in_decl,
- integral_constant_expression_p,
index_exp_list);
tree r;
if (TYPE_P (op1))
op1 = tsubst (op1, args, complain, in_decl);
else
- op1 = tsubst_copy_and_build (op1, args, complain, in_decl,
- /*integral_constant_expression_p=*/
- false);
+ op1 = tsubst_copy_and_build (op1, args, complain, in_decl);
--cp_unevaluated_operand;
--c_inhibit_evaluation_warnings;
}
op1 = TREE_OPERAND (t, 0);
++cp_unevaluated_operand;
++c_inhibit_evaluation_warnings;
- op1 = tsubst_copy_and_build (op1, args, complain, in_decl,
- /*integral_constant_expression_p=*/false);
+ op1 = tsubst_copy_and_build (op1, args, complain, in_decl);
--cp_unevaluated_operand;
--c_inhibit_evaluation_warnings;
RETURN (objc_build_encode_expr (op1));
++cp_unevaluated_operand;
++c_inhibit_evaluation_warnings;
++cp_noexcept_operand;
- op1 = tsubst_copy_and_build (op1, args, complain, in_decl,
- /*integral_constant_expression_p=*/false);
+ op1 = tsubst_copy_and_build (op1, args, complain, in_decl);
--cp_unevaluated_operand;
--c_inhibit_evaluation_warnings;
--cp_noexcept_operand;
case COMPOUND_EXPR:
{
tree op0 = tsubst_copy_and_build (TREE_OPERAND (t, 0), args,
- complain & ~tf_decltype, in_decl,
- integral_constant_expression_p);
+ complain & ~tf_decltype, in_decl);
RETURN (build_x_compound_expr (EXPR_LOCATION (t),
op0,
RECUR (TREE_OPERAND (t, 1)),
augmenting the overload set via ADL, so during this initial
substitution we disable mark_used by setting tf_conv (68942). */
subcomplain |= tf_conv;
- function = tsubst_copy_and_build (function, args, subcomplain,
- in_decl,
- integral_constant_expression_p);
+ function = tsubst_copy_and_build (function, args, subcomplain, in_decl);
if (BASELINK_P (function))
qualified_p = true;
nargs = call_expr_nargs (t);
releasing_vec call_args;
tsubst_copy_and_build_call_args (t, args, complain, in_decl,
- integral_constant_expression_p,
call_args);
/* Stripped-down processing for a call in a thunk. Specifically, in
/* For backwards compatibility and good diagnostics, try
the unqualified lookup again if we aren't in SFINAE
context. */
- tree unq = (tsubst_copy_and_build
- (function, args, complain, in_decl,
- integral_constant_expression_p));
+ tree unq = tsubst_copy_and_build (function, args,
+ complain, in_decl);
if (unq == error_mark_node)
RETURN (error_mark_node);
case OFFSETOF_EXPR:
{
tree object_ptr
- = tsubst_copy_and_build (TREE_OPERAND (t, 1), args, complain,
- in_decl,
- /*integral_constant_expression_p=*/false);
+ = tsubst_copy_and_build (TREE_OPERAND (t, 1), args,
+ complain, in_decl);
RETURN (finish_offsetof (object_ptr,
RECUR (TREE_OPERAND (t, 0)),
EXPR_LOCATION (t)));
tree stmt_expr = begin_stmt_expr ();
cur_stmt_expr = stmt_expr;
- tsubst_expr (STMT_EXPR_STMT (t), args, complain, in_decl,
- integral_constant_expression_p);
+ tsubst_expr (STMT_EXPR_STMT (t), args, complain, in_decl);
stmt_expr = finish_stmt_expr (stmt_expr, false);
cur_stmt_expr = old_stmt_expr;
}
case TRANSACTION_EXPR:
- RETURN (tsubst_expr(t, args, complain, in_decl,
- integral_constant_expression_p));
+ RETURN (tsubst_expr (t, args, complain, in_decl));
case PAREN_EXPR:
if (REF_PARENTHESIZED_P (t))
/* Do deferred instantiation of the noexcept-specifier. */
noex = tsubst_copy_and_build (DEFERRED_NOEXCEPT_PATTERN (noex),
DEFERRED_NOEXCEPT_ARGS (noex),
- tf_warning_or_error, fn,
- /*i_c_e_p=*/true);
+ tf_warning_or_error, fn);
/* Build up the noexcept-specification. */
spec = build_noexcept_spec (noex, tf_warning_or_error);
else
{
tsubst_expr (DECL_SAVED_TREE (code_pattern), args,
- tf_warning_or_error, DECL_TI_TEMPLATE (d),
- /*integral_constant_expression_p=*/false);
+ tf_warning_or_error, DECL_TI_TEMPLATE (d));
/* Set the current input_location to the end of the function
so that finish_function knows where we are. */
push_nested_class (DECL_CONTEXT (d));
init = tsubst_expr (DECL_INITIAL (code_pattern),
args,
- tf_warning_or_error, NULL_TREE,
- /*integral_constant_expression_p=*/false);
+ tf_warning_or_error, NULL_TREE);
/* If instantiating the initializer involved instantiating this
again, don't call cp_finish_decl twice. */
if (!DECL_INITIAL (d))
tmp = init;
if (init != void_type_node)
init = tsubst_expr (init, argvec,
- tf_warning_or_error, NULL_TREE,
- /*integral_constant_expression_p=*/false);
+ tf_warning_or_error, NULL_TREE);
if (init == NULL_TREE && tmp != NULL_TREE)
/* If we had an initializer but it instantiated to nothing,
value-initialize the object. This will only occur when
/* Note that in a template enum, the TREE_VALUE is the
CONST_DECL, not the corresponding INTEGER_CST. */
value = tsubst_expr (DECL_INITIAL (decl),
- args, tf_warning_or_error, NULL_TREE,
- /*integral_constant_expression_p=*/true);
+ args, tf_warning_or_error, NULL_TREE);
/* Give this enumeration constant the correct access. */
set_current_access_from_decl (decl);