[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