FreeBSD/contrib/gcc/cp/cvt.c
/* We are using a reference VAL for its value. Bash that reference all the
   way down to its lowest form.  */
We are using a reference VAL for its value. Bash that reference all the
way down to its lowest form.
We are using a reference VAL for its value . Bash that reference all the way down to its lowest form .
tree
convert_from_reference (tree val)
{
  if (TREE_CODE (TREE_TYPE (val)) == REFERENCE_TYPE)
    {
      tree t = canonical_type_variant (TREE_TYPE (TREE_TYPE (val)));
      tree ref = build1 (INDIRECT_REF, t, val);
      TREE_READONLY (ref) = CP_TYPE_CONST_P (t);
      TREE_THIS_VOLATILE (ref) = CP_TYPE_VOLATILE_P (t);
      TREE_SIDE_EFFECTS (ref)
	= (TREE_THIS_VOLATILE (ref) || TREE_SIDE_EFFECTS (val));
      REFERENCE_REF_P (ref) = 1;
      val = ref;
    }
  return val;
}
tree convert_from_reference ( tree val ) { if ( TREE_CODE ( TREE_TYPE ( val ) ) == REFERENCE_TYPE ) { tree t = canonical_type_variant ( TREE_TYPE ( TREE_TYPE ( val ) ) ) ; tree ref = build1 ( INDIRECT_REF , t , val ) ; TREE_READONLY ( ref ) = CP_TYPE_CONST_P ( t ) ; TREE_THIS_VOLATILE ( ref ) = CP_TYPE_VOLATILE_P ( t ) ; TREE_SIDE_EFFECTS ( ref ) = ( TREE_THIS_VOLATILE ( ref ) || TREE_SIDE_EFFECTS ( val ) ) ; REFERENCE_REF_P ( ref ) = 1 ; val = ref ; } return val ; }
We are using a reference VAL for its value.
We are using a reference VAL for its value .
/* We *must* set TREE_READONLY when dereferencing a pointer to const,
	  so that we get the proper error message if the result is used
	  to assign to.  Also, &* is supposed to be a no-op.  */