[PATCH] gas: Fix \+ expansion for .irp and .irpc
Jan Beulich
jbeulich@suse.com
Thu May 16 07:55:08 GMT 2024
On 16.05.2024 09:53, Jan Beulich wrote:
> On 16.05.2024 09:00, Fangrui Song wrote:
>> On Wed, May 15, 2024 at 11:54 PM Fangrui Song <maskray@google.com> wrote:
>>>
>>> On Wed, May 15, 2024 at 10:53 PM Jan Beulich <jbeulich@suse.com> wrote:
>>>>
>>>> On 16.05.2024 04:42, Fangrui Song wrote:
>>>>> --- /dev/null
>>>>> +++ b/gas/testsuite/gas/macros/count-repeat.s
>>>>> @@ -0,0 +1,8 @@
>>>>> + .rept 1
>>>>> + .print "\+"
>>>>> + .endr
>>>>> + .print "\+"
>>>>> + .endr
>>>>> + .irpc i,1
>>>>> + .print "\+"
>>>>> + .endr
>>>
>>>> I can't help thinking that this can't possibly assemble (or if it does,
>>>> there's a bug elsewhere), for (presumably) missing an .irp line to
>>>> match the middle .endr.
>>>>
>>>> Just to mention it - I'm intending to extend \+ support to at least .irp
>>>> and .irpc; whether that can also reasonably be done for .rept I haven't
>>>> checked yet.
>>>>
>>>> Jan
>>>
>>> I agree, extending \+ operator .irp, .irpc, and .rept will make a lot of sense.
>>>
>>> We will finally get a for loop (unsigned i = 0; i != count; i++)
>>>
>>> .rept 3
>>> .print "\+" # 0 1 2
>>> .endp
>>>
>>> Previously, I resorted to .irpc i,0123456789 \i .endr when the
>>> loop count is <= 10, but there is no elegant way to reference \i when
>>> the loop count is > 10.
>>
>> What should \+ expand to for nested loops?
>>
>> .rept 2
>> .rept 2
>> .print "n\+"
>> .endr
>> .endr
>
> For macros I expect (didn't try yet) it's the outermost one, so I'd expect
> .irp / .irpc / .rept would want to match that. I'll want to see how it ends
> up most logically, yet without going through ugly extra hoops.
IOW in the end it may well be a matter of properly documenting things.
Jan
More information about the Binutils
mailing list