This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Not understanding the optimisation of the compiler

We are evaluation Keil uVision V4.10 and ARMCC V4.1.0.481.

Our first test run didn't go so well.

With no optimisation, everything worked OK. Using optimisation 1 or above, the test failed.

For various reasons, I can not disclose the test source code. However, I will attempt to create a small self-contained example later on. The part of the test code that caused the problem is setting up an multi dimensional array, setting each element to '1' (ie. Array[x][y] = 1 with a for loop for both x and y).

In the meantime, I wonder if anyone has had a similar problem?

Using optimisation -O3, the assembler code in the debugger looks like this:

48: for ( y= 0 ; y < 8 ; y++ )
0x80000AAC E5C02000 STRB R2,[R0]
0x80000AB0 E2822001 ADD R2,R2,#0x00000001
0x80000AB4 E3A0C001 MOV R12,#0x00000001
0x80000AB8 E20220FF AND R2,R2,#0x000000FF
0x80000ABC E7C3C001 STRB R12,[R3,R1]
0x80000AC0 E5C02001 STRB R2,[R0,#0x0001]
0x80000AC4 EAFFFFFC B 0x80000ABC -- Isn't this an infinite loop???