Output file size?
Dan Kegel
dank@kegel.com
Fri Sep 19 15:07:00 GMT 2003
Kai Ruottu wrote:
> One known bug? with the targets capable to do bit operations directly
> with the data in memory places, like m68k, h8300, h8500 and v850, is the
> so called 'volatile bug'. The following example should demonstrate this:
>
> ------------------- clip ------------------------------
> void write_device1(unsigned char *addr, int val)
> {
> unsigned char *ptr = addr;
> *ptr = val;
> }
>
> void write_device2(volatile unsigned char *addr, int val)
> {
> volatile unsigned char *ptr = addr;
> *ptr = val;
> }
> ------------------- clip ------------------------------
>
> The produced code for both cases should of course be the same:
>
> ------------------- clip ------------------------------
> /home1/kai/test/m68k > gcc-cpu32-elf-3.3 -Os -fomit-frame-pointer -S \
> -o volatbug.s volatbug.c
> /home1/kai/test/m68k > less volatbug.s
> .file "volatbug.c"
> .text
> .align 2
> .globl write_device1
> .type write_device1, @function
> write_device1:
> move.l 4(%sp),%a0
> move.b 11(%sp),(%a0)
> rts
> .size write_device1, .-write_device1
> .align 2
> .globl write_device2
> .type write_device2, @function
> write_device2:
> move.l 4(%sp),%a0
> move.b 11(%sp),(%a0)
> rts
> .size write_device2, .-write_device2
> .ident "GCC: (GNU) 3.3.1"
> ------------------- clip ------------------------------
And it appears to be. What's the bug?
- Dan
--
Dan Kegel
http://www.kegel.com
http://counter.li.org/cgi-bin/runscript/display-person.cgi?user=78045
------
Want more information? See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sources.redhat.com
More information about the crossgcc
mailing list