------- Comment #8 from nospamname at web dot de 2009-12-29 18:52 ------- I have now find out with cflag -m68000 work with -O3. But it work not with -m68020 or -m68040 or -m68060
Here is a standalone testcode and output with -S ----- struct test{ long dummy; unsigned long buf; }; struct unaligned_32 { unsigned long l; } __attribute__((packed)); static int flv_probe(struct test *p) { const unsigned char *d; d = p->buf; if (d[0] == 'F' && d[1] == 'L' && d[2] == 'V' && d[3] < 5 && d[5]==0 && (((const struct unaligned_32 *) (d+5))->l)>8) { return 100; } return 0; } int main(int argc, char **argv) { printf("%ld\n",flv_probe(argc)); } ---------------------- Mit dem 4.5.0 vom 24.12 bekomme ich mit -O3 den Outpout .Code geht nicht. (CFLAGS -m68060 -S -O3) #NO_APP .text LC0: .ascii "%ld\12\0" .even .globl _main _main: link.w a5,#0 jsr ___main clr.l 12(a5) move.l #LC0,8(a5) unlk a5 jra _printf ---------------------------------------------- (CFLAGS -m68060 -S -O1) #NO_APP .text LC0: .ascii "%ld\12\0" .even .globl _main _main: link.w a5,#0 jsr ___main move.l 8(a5),a0 move.l 4(a0),a0 cmp.b #70,(a0) jne L3 cmp.b #76,1(a0) jne L4 cmp.b #86,2(a0) jne L5 cmp.b #4,3(a0) jhi L6 tst.b 5(a0) jne L7 move.l 5(a0),d0 moveq #8,d1 cmp.l d0,d1 jcs L8 clr.l d0 jra L2 L3: clr.l d0 jra L2 L4: clr.l d0 jra L2 L5: clr.l d0 jra L2 L6: clr.l d0 jra L2 L7: clr.l d0 jra L2 L8: moveq #100,d0 L2: move.l d0,-(sp) pea LC0 jsr _printf addq.l #8,sp unlk a5 rts #NO_APP .text LC0: .ascii "%ld\12\0" .even .globl _main _main: link.w a5,#0 move.l a2,-(sp) move.l 8(a5),a2 jsr ___main move.l 4(a2),a0 cmp.b #70,(a0) jeq L10 L7: moveq #0,d0 move.l d0,12(a5) move.l #LC0,8(a5) move.l -4(a5),a2 unlk a5 jra _printf L10: cmp.b #76,1(a0) jne L7 cmp.b #86,2(a0) jne L7 cmp.b #4,3(a0) jhi L7 tst.b 5(a0) jne L7 moveq #0,d1 move.b 6(a0),d1 swap d1 clr.w d1 moveq #0,d0 move.b 7(a0),d0 lsl.l #8,d0 or.l d1,d0 or.b 8(a0),d0 moveq #8,d1 cmp.l d0,d1 jcc L7 moveq #100,d0 move.l d0,12(a5) move.l #LC0,8(a5) move.l -4(a5),a2 unlk a5 jra _printf ------------------------------------------------ (CFLAGS -m68000 -S -O3) #NO_APP .text LC0: .ascii "%ld\12\0" .even .globl _main _main: link.w a5,#0 move.l a2,-(sp) move.l 8(a5),a2 jsr ___main move.l 4(a2),a0 cmp.b #70,(a0) jeq L10 L7: moveq #0,d0 move.l d0,12(a5) move.l #LC0,8(a5) move.l -4(a5),a2 unlk a5 jra _printf L10: cmp.b #76,1(a0) jne L7 cmp.b #86,2(a0) jne L7 cmp.b #4,3(a0) jhi L7 tst.b 5(a0) jne L7 moveq #0,d1 move.b 6(a0),d1 swap d1 clr.w d1 moveq #0,d0 move.b 7(a0),d0 lsl.l #8,d0 or.l d1,d0 or.b 8(a0),d0 moveq #8,d1 cmp.l d0,d1 jcc L7 moveq #100,d0 move.l d0,12(a5) move.l #LC0,8(a5) move.l -4(a5),a2 unlk a5 jra _printf -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42522