When I remember right there was once a thread where coding the post increment as separate statement did help, but that was for a loop and not for multiple assignments.
With this code I get that (with CF 6.3, not 6.4).
Code:
extern char array[];#pragma opt_propagation offvoid function(){ char * ascii_data= array; *ascii_data = '0' ; ascii_data++; *ascii_data = '1' ; ascii_data++; *ascii_data = '1' ; ascii_data++; *ascii_data = '1' ; ascii_data++; *ascii_data = '1' ; ascii_data++; *ascii_data = '1' ; ascii_data++; *ascii_data = '1' ; ascii_data++; *ascii_data = '1' ; ascii_data++; *ascii_data = '1' ; ascii_data++; *ascii_data = '1' ; ascii_data++; *ascii_data = '1' ; ascii_data++; *ascii_data = '1' ; ascii_data++; *ascii_data = '1' ; ascii_data++; *ascii_data = '1' ; ascii_data++; *ascii_data = '1' ; ascii_data++;}
That generates
Code:
0x00000000 _function:; function:0x00000000 0x41F900000000 lea _array,a00x00000006 0x10FC0030 move.b #48,(a0)+ ; '0'0x0000000A 0x7031 moveq #49,d00x0000000C 0x10C0 move.b d0,(a0)+0x0000000E 0x10C0 move.b d0,(a0)+0x00000010 0x10C0 move.b d0,(a0)+0x00000012 0x10C0 move.b d0,(a0)+0x00000014 0x10C0 move.b d0,(a0)+0x00000016 0x10C0 move.b d0,(a0)+0x00000018 0x10C0 move.b d0,(a0)+0x0000001A 0x10C0 move.b d0,(a0)+0x0000001C 0x10C0 move.b d0,(a0)+0x0000001E 0x10C0 move.b d0,(a0)+0x00000020 0x10C0 move.b d0,(a0)+0x00000022 0x10C0 move.b d0,(a0)+0x00000024 0x1080 move.b d0,(a0)0x00000026 0x11400001 move.b d0,1(a0)0x0000002A 0x4E75 rts