FreeBSD/contrib/gcc/cp/tree.c
/* EXPR is being used in an rvalue context.  Return a version of EXPR
   that is marked as an rvalue.  */
EXPR is being used in an rvalue context.  Return a version of EXPR
that is marked as an rvalue.
EXPR is being used in an rvalue context . Return a version of EXPR that is marked as an rvalue .
tree
rvalue (tree expr)
{
  tree type;
  if (error_operand_p (expr))
    return expr;
  type = TREE_TYPE (expr);
  if (!CLASS_TYPE_P (type) && cp_type_quals (type))
    type = TYPE_MAIN_VARIANT (type);
  if (!processing_template_decl && real_lvalue_p (expr))
    expr = build1 (NON_LVALUE_EXPR, type, expr);
  else if (type != TREE_TYPE (expr))
    expr = build_nop (type, expr);
  return expr;
}
tree rvalue ( tree expr ) { tree type ; if ( error_operand_p ( expr ) ) return expr ; type = TREE_TYPE ( expr ) ; if ( ! CLASS_TYPE_P ( type ) && cp_type_quals ( type ) ) type = TYPE_MAIN_VARIANT ( type ) ; if ( ! processing_template_decl && real_lvalue_p ( expr ) ) expr = build1 ( NON_LVALUE_EXPR , type , expr ) ; else if ( type != TREE_TYPE ( expr ) ) expr = build_nop ( type , expr ) ; return expr ; }
EXPR is being used in an rvalue context.
EXPR is being used in an rvalue context .
/* [basic.lval]

     Non-class rvalues always have cv-unqualified types.  */