
Hello Bill,
On Wed, 19 Nov 2014 11:31:05 -0500, Bill Pringlemeir bpringlemeir@nbsps.com wrote:
On 19 Nov 2014, wd@denx.de wrote:
Dear Albert,
In message 20141119074214.3d414ce6@lilith you wrote:
For -mauto-it, it is not documented in the gas documentation online or in my current as' --target-help. I'll dig this deeper today, but barring any scream from me, the change above is fine globally in U-Boot.
Apparently this [1] is where it is coming from; no further documentation there, though.
[1] https://sourceware.org/ml/binutils/2009-05/msg00132.html
I would think that if this worked they would make it automatic and not an option. Probably this is only in certain binutils/as.
With 4.6.3 and 4.9.1 I do not have this option,
Which option do you mean? -mimplicit-it or -mauto-it?
[foo.S] .syntax unified .thumb foo: cmp r0, #5 movne r1,#6 moveq r1,#2 bx lr bar: cmp r0, #10 movhi r1,#3 movls r1,#7 moveq r1,#11 bx lr
$ arm-none-linux-gnueabi.gcc4.6.3/bin/arm-none-linux-gnueabi-as -mcpu=cortex-a5 -mimplicit-it=always foo.S -o foo.o $ arm-none-linux-gnueabi-vybrid-4.9.1/bin/arm-none-linux-gnueabi-as -mcpu=cortex-a5 -mimplicit-it=always foo.S -o foo.o
Both give 'objdump -S foo.o', foo.o: file format elf32-littlearm
Disassembly of section .text:
00000000 <foo>: 0: 2805 cmp r0, #5 2: bf14 ite ne 4: 2106 movne r1, #6 6: 2102 moveq r1, #2 8: 4770 bx lr
0000000a <bar>: a: 280a cmp r0, #10 c: bf8c ite hi e: 2103 movhi r1, #3 10: 2107 movls r1, #7 12: bf08 it eq 14: 210b moveq r1, #11 16: 4770 bx lr
I think before the patch there would be 'it' values before each and every condition. In fact, if you change 'bar' to,
bar: cmp r0, #10 movhi r1,#3 movlo r1,#7 moveq r1,#11 bx lr
You get three 'IT' conditions as 'HI' and 'LO' are not opposite. The patch seem to detect things that are the exact opposite. The 'bar' above ends up with '11' in r1 if the value is zero, but it temporarily '7'. The 2nd bar will only place 11 in r1.
Fwiw, Bill Pringlemeir.
Ref: https://wiki.ubuntu.com/ARM/Thumb2PortingHowto#Conditional_Execution
All this is about -mimplicit-it, which *is* documented, *is* consistently present in common toolchains AFAICT and is and (as) logcical (as it can be when dealing with backward compatibility of command lines etc).
However, my problem is not with -mimplicit-it; it is with -mauto-it.
My gut feeling is that -mauto-it is a predecessor of -mimplicit-it.
Amicalement,