From 015540e1797f545c8500d7bd4df93ecc77eca9f5 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Wed, 18 Aug 2010 05:56:41 +0000 Subject: * macro.c (sub_actual): Add back ampersand suffix when no substitution. (macro_expand_body): Correct comment. --- gas/macro.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'gas/macro.c') diff --git a/gas/macro.c b/gas/macro.c index 3e3ffb11f5..e39288355c 100644 --- a/gas/macro.c +++ b/gas/macro.c @@ -748,6 +748,8 @@ sub_actual (int start, sb *in, sb *t, struct hash_control *formal_hash, /* Doing this permits people to use & in macro bodies. */ sb_add_char (out, '&'); sb_add_sb (out, t); + if (src != start && in->ptr[src - 1] == '&') + sb_add_char (out, '&'); } else if (copyifnotthere) { @@ -788,9 +790,8 @@ macro_expand_body (sb *in, sb *out, formal_entry *formals, } else { - /* FIXME: Why do we do this? */ - /* At least in alternate mode this seems correct; without this - one can't append a literal to a parameter. */ + /* Permit macro parameter substition delineated with + an '&' prefix and optional '&' suffix. */ src = sub_actual (src + 1, in, &t, formal_hash, '&', out, 0); } } -- cgit v1.2.1