[PATCH] New option for automatically generating IT blocks

Daniel Gutson dgutson@codesourcery.com
Tue May 19 20:36:00 GMT 2009


Richard,
   the assembly of your test case generates:

   0:   2800            cmp     r0, #0
   2:   bf0c            ite     eq
   4:   3102            addeq   r1, #2
   6:   3103            addne   r1, #3

So only one IT insn is generated.

The assembler also accepts a version of the testcase with the IT insn 
added manually:

        .syntax unified
        .text
        cmp     r0, #0
        ite eq
        addeq   r1, #2
        .data
        .word   33
        .text
        addne   r1, #3

And, addressing your other question:
        .syntax unified
        .text
        cmp     r0, #0
        ite eq
        addeq   r1, #2
        .data
        .word   33
        .text
        addeq   r1, #3

the assembler does complain due to the last addeq (which should be a 
NE), so it does verify.

Please let me know if I addressed your concerns.

	Daniel.


Richard Earnshaw wrote:
> On Fri, 2009-05-08 at 16:29 -0300, Daniel Gutson wrote:
>> Hi,
>>   apologies again, this is the current version of the patch.
>>
>> As I mentioned in the original post, with this patch the assembler allows use of conditional Thumb-2 instructions without requiring explicit IT instructions.
>>
>> The patch adds the -mauto-it command-line option to enable this automatic generation of IT instructions. When not specified, the original behavior takes place.
>>
>> I tested this by running the gas testsuite, plus the test cases I added. 
>>
>> Please commit it for me if accepted, since I don't have write access.
>>
> 
> Looks generally ok, but I've a couple of questions about dark corners
> that I can't spot immediate answers to when reading the code.
> 
> What happens if the user writes
> 
> 	.text
> 	cmp	r0, #0
> 	addeq	r1, #2
> 	.data
> 	.word	33
> 	.text
> 	addne	r1, #3
> 
> Do we get one or two IT instructions?  If the user puts an explicit ITE
> instruction in the sequence does this get verified against both parts.
> 
> What happens if we replace the .data section with a different code
> section?  What if that also includes an IT block?
> 
> R.
> 
> 
> 




More information about the Binutils mailing list