Commit a7f8415c by Paolo Carlini Committed by Paolo Carlini

constexpr.c (cxx_eval_component_reference): Use INDIRECT_REF_P.

2018-02-08  Paolo Carlini  <paolo.carlini@oracle.com>

	* constexpr.c (cxx_eval_component_reference): Use INDIRECT_REF_P.
	* lambda.c (build_capture_proxy): Likewise.
	* search.c (field_access_p): Likewise.
	* semantics.c (omp_clause_decl, omp_privatize_field,
	finish_omp_clauses): Likewise.

From-SVN: r257503
parent 73974561
2018-02-08 Paolo Carlini <paolo.carlini@oracle.com> 2018-02-08 Paolo Carlini <paolo.carlini@oracle.com>
* constexpr.c (cxx_eval_component_reference): Use INDIRECT_REF_P.
* lambda.c (build_capture_proxy): Likewise.
* search.c (field_access_p): Likewise.
* semantics.c (omp_clause_decl, omp_privatize_field,
finish_omp_clauses): Likewise.
2018-02-08 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/83806 PR c++/83806
* typeck.c (decay_conversion): Use mark_rvalue_use for the special * typeck.c (decay_conversion): Use mark_rvalue_use for the special
case of nullptr too. case of nullptr too.
......
...@@ -2463,7 +2463,7 @@ cxx_eval_component_reference (const constexpr_ctx *ctx, tree t, ...@@ -2463,7 +2463,7 @@ cxx_eval_component_reference (const constexpr_ctx *ctx, tree t,
tree whole = cxx_eval_constant_expression (ctx, orig_whole, tree whole = cxx_eval_constant_expression (ctx, orig_whole,
lval, lval,
non_constant_p, overflow_p); non_constant_p, overflow_p);
if (TREE_CODE (whole) == INDIRECT_REF if (INDIRECT_REF_P (whole)
&& integer_zerop (TREE_OPERAND (whole, 0)) && integer_zerop (TREE_OPERAND (whole, 0))
&& !ctx->quiet) && !ctx->quiet)
error ("dereferencing a null pointer in %qE", orig_whole); error ("dereferencing a null pointer in %qE", orig_whole);
......
...@@ -450,7 +450,7 @@ build_capture_proxy (tree member, tree init) ...@@ -450,7 +450,7 @@ build_capture_proxy (tree member, tree init)
{ {
if (PACK_EXPANSION_P (init)) if (PACK_EXPANSION_P (init))
init = PACK_EXPANSION_PATTERN (init); init = PACK_EXPANSION_PATTERN (init);
if (TREE_CODE (init) == INDIRECT_REF) if (INDIRECT_REF_P (init))
init = TREE_OPERAND (init, 0); init = TREE_OPERAND (init, 0);
STRIP_NOPS (init); STRIP_NOPS (init);
} }
......
...@@ -1636,7 +1636,7 @@ field_access_p (tree component_ref, tree field_decl, tree field_type) ...@@ -1636,7 +1636,7 @@ field_access_p (tree component_ref, tree field_decl, tree field_type)
return false; return false;
tree indirect_ref = TREE_OPERAND (component_ref, 0); tree indirect_ref = TREE_OPERAND (component_ref, 0);
if (TREE_CODE (indirect_ref) != INDIRECT_REF) if (!INDIRECT_REF_P (indirect_ref))
return false; return false;
tree ptr = STRIP_NOPS (TREE_OPERAND (indirect_ref, 0)); tree ptr = STRIP_NOPS (TREE_OPERAND (indirect_ref, 0));
......
...@@ -4391,7 +4391,7 @@ omp_clause_decl_field (tree decl) ...@@ -4391,7 +4391,7 @@ omp_clause_decl_field (tree decl)
&& DECL_OMP_PRIVATIZED_MEMBER (decl)) && DECL_OMP_PRIVATIZED_MEMBER (decl))
{ {
tree f = DECL_VALUE_EXPR (decl); tree f = DECL_VALUE_EXPR (decl);
if (TREE_CODE (f) == INDIRECT_REF) if (INDIRECT_REF_P (f))
f = TREE_OPERAND (f, 0); f = TREE_OPERAND (f, 0);
if (TREE_CODE (f) == COMPONENT_REF) if (TREE_CODE (f) == COMPONENT_REF)
{ {
...@@ -4446,7 +4446,7 @@ omp_privatize_field (tree t, bool shared) ...@@ -4446,7 +4446,7 @@ omp_privatize_field (tree t, bool shared)
omp_private_member_map = new hash_map<tree, tree>; omp_private_member_map = new hash_map<tree, tree>;
if (TREE_CODE (TREE_TYPE (t)) == REFERENCE_TYPE) if (TREE_CODE (TREE_TYPE (t)) == REFERENCE_TYPE)
{ {
gcc_assert (TREE_CODE (m) == INDIRECT_REF); gcc_assert (INDIRECT_REF_P (m));
m = TREE_OPERAND (m, 0); m = TREE_OPERAND (m, 0);
} }
tree vb = NULL_TREE; tree vb = NULL_TREE;
...@@ -5864,7 +5864,7 @@ finish_omp_clauses (tree clauses, enum c_omp_region_type ort) ...@@ -5864,7 +5864,7 @@ finish_omp_clauses (tree clauses, enum c_omp_region_type ort)
if (TREE_CODE (t) == POINTER_PLUS_EXPR) if (TREE_CODE (t) == POINTER_PLUS_EXPR)
t = TREE_OPERAND (t, 0); t = TREE_OPERAND (t, 0);
if (TREE_CODE (t) == ADDR_EXPR if (TREE_CODE (t) == ADDR_EXPR
|| TREE_CODE (t) == INDIRECT_REF) || INDIRECT_REF_P (t))
t = TREE_OPERAND (t, 0); t = TREE_OPERAND (t, 0);
} }
tree n = omp_clause_decl_field (t); tree n = omp_clause_decl_field (t);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment