PR ld/12356

* ldexp.h (exp_assop): Delete.
	(exp_assign, exp_defsym): Declare.
	* ldexp.c (exp_assop): Make static, handle all assignment variations.
	(exp_assign, exp_defsym): New functions.
	(exp_provide): Use exp_assop.
	* ldgram.y (defsym_expr): Use exp_defsym.
	* ldctor.c, * ldgram.y, * ldlang.c, * mri.c, * emultempl/beos.em,
	* emultempl/pe.em, * emultempl/pep.em, * emultempl/spuelf.em,
	* emultempl/xtensaelf.em: Update exp_assop -> exp_assign.
This commit is contained in:
Alan Modra
2011-01-13 13:06:22 +00:00
parent 15b8ba7693
commit 2e57b2afce
12 changed files with 82 additions and 58 deletions

View File

@@ -974,18 +974,34 @@ exp_nameop (int code, const char *name)
}
etree_type *
exp_assop (int code, const char *dst, etree_type *src)
static etree_type *
exp_assop (const char *dst,
etree_type *src,
enum node_tree_enum class,
bfd_boolean hidden)
{
etree_type *new_e;
etree_type *n;
new_e = (etree_type *) stat_alloc (sizeof (new_e->assign));
new_e->type.node_code = code;
new_e->type.lineno = src->type.lineno;
new_e->type.node_class = etree_assign;
new_e->assign.src = src;
new_e->assign.dst = dst;
return new_e;
n = (etree_type *) stat_alloc (sizeof (n->assign));
n->assign.type.node_code = '=';
n->assign.type.lineno = src->type.lineno;
n->assign.type.node_class = class;
n->assign.src = src;
n->assign.dst = dst;
n->assign.hidden = hidden;
return n;
}
etree_type *
exp_assign (const char *dst, etree_type *src)
{
return exp_assop (dst, src, etree_assign, FALSE);
}
etree_type *
exp_defsym (const char *dst, etree_type *src)
{
return exp_assop (dst, src, etree_assign, TRUE);
}
/* Handle PROVIDE. */
@@ -993,16 +1009,7 @@ exp_assop (int code, const char *dst, etree_type *src)
etree_type *
exp_provide (const char *dst, etree_type *src, bfd_boolean hidden)
{
etree_type *n;
n = (etree_type *) stat_alloc (sizeof (n->assign));
n->assign.type.node_code = '=';
n->assign.type.lineno = src->type.lineno;
n->assign.type.node_class = etree_provide;
n->assign.src = src;
n->assign.dst = dst;
n->assign.hidden = hidden;
return n;
return exp_assop (dst, src, etree_provide, hidden);
}
/* Handle ASSERT. */