summaryrefslogtreecommitdiff
path: root/gcc/cp/typeck.c
diff options
context:
space:
mode:
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>2015-04-16 15:12:10 +0000
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>2015-04-16 15:12:10 +0000
commit4430f688ae61145a51c2a3cbbe902afdec135176 (patch)
tree9cdcb4cf2bc217b21ecb591201bd58f69d5cae27 /gcc/cp/typeck.c
parent1e4343cd9927c965b5c1801a424e9708b09224f8 (diff)
downloadgcc-4430f688ae61145a51c2a3cbbe902afdec135176.tar.gz
2015-04-16 Paolo Carlini <paolo.carlini@oracle.com>
* call.c (build_op_delete_call, build_over_call): Check mark_used return value. * class.c (resolve_address_of_overloaded_function): Likewise. * decl.c (cxx_maybe_build_cleanup): Likewise. * pt.c (gen_elem_of_pack_expansion_instantiation, tsubst_baselink, tsubst_qualified_id, tsubst_copy, tsubst_copy_and_build): Likewise. * rtti.c (build_dynamic_cast_1): Likewise. * semantics.c (process_outer_var_ref): Likewise. * typeck.c (build_class_member_access_expr, cp_build_function_call_vec, cp_build_addr_expr_1): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@222150 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cp/typeck.c')
-rw-r--r--gcc/cp/typeck.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c
index e9d4cae5705..250b5d68767 100644
--- a/gcc/cp/typeck.c
+++ b/gcc/cp/typeck.c
@@ -2298,7 +2298,8 @@ build_class_member_access_expr (tree object, tree member,
if (DECL_P (member))
{
member_scope = DECL_CLASS_CONTEXT (member);
- mark_used (member);
+ if (!mark_used (member, complain) && !(complain & tf_error))
+ return error_mark_node;
if (TREE_DEPRECATED (member))
warn_deprecated_use (member, NULL_TREE);
}
@@ -3477,7 +3478,8 @@ cp_build_function_call_vec (tree function, vec<tree, va_gc> **params,
if (TREE_CODE (function) == FUNCTION_DECL)
{
- mark_used (function);
+ if (!mark_used (function, complain) && !(complain & tf_error))
+ return error_mark_node;
fndecl = function;
/* Convert anything with function type to a pointer-to-function. */
@@ -5376,7 +5378,8 @@ cp_build_addr_expr_1 (tree arg, bool strict_lvalue, tsubst_flags_t complain)
and the created OFFSET_REF. */
tree base = TYPE_MAIN_VARIANT (TREE_TYPE (TREE_OPERAND (arg, 0)));
tree fn = get_first_fn (TREE_OPERAND (arg, 1));
- mark_used (fn);
+ if (!mark_used (fn, complain) && !(complain & tf_error))
+ return error_mark_node;
if (! flag_ms_extensions)
{
@@ -5563,7 +5566,8 @@ cp_build_addr_expr_1 (tree arg, bool strict_lvalue, tsubst_flags_t complain)
function. */
gcc_assert (TREE_CODE (fn) == FUNCTION_DECL
&& DECL_STATIC_FUNCTION_P (fn));
- mark_used (fn);
+ if (!mark_used (fn, complain) && !(complain & tf_error))
+ return error_mark_node;
val = build_address (fn);
if (TREE_SIDE_EFFECTS (TREE_OPERAND (arg, 0)))
/* Do not lose object's side effects. */