On 03/01/14 16:42, John Tytgat wrote:
In message <[email protected]> Lee Noar <[email protected]> wrote:I've been using trunk for some time for development and it seems stable to me. The only problem I've had is a crash in Cairo which I traced to file cairo-1.12.16/src/cairo-boxes-intersect.c, function sweep_line_init(), GCC 4.7.4 produced this code snippet: ldr r0, [r0, #-3936] ldr r7, [r0, #-3940] str r9, [r7, r0, asl #2] The first ldr corrupts r0 which is still required by the second ldr. I was able to work around it by declaring the function noinline. This must be an extremely obscure bug, because this is the only time I've seen it and I've compiled and run a fair bit of code with this compiler. Unfortunately, I wouldn't have a clue how to fix it.One way is to figure out if this is still triggerable using arm-unknown-eabi target using the same compiler sources (change TARGET in Makefile). If so, then you can try later versions of the compiler and see if/when it is solved. If so, it helps retrieving the right patch.
I've just tried compiling it on a Raspberry PI (Linux) which has GCC 4.6.3, but that has more registers at its disposal (it can use r10, and r11 as general registers), so its use of the stack and code produced is slightly different. This code sequence isn't present, but I can't say that RISC OS GCC 4.6.3 wouldn't generate it. Lee. _______________________________________________ GCCSDK mailing list [email protected] Bugzilla: http://www.riscos.info/bugzilla/index.cgi List Info: http://www.riscos.info/mailman/listinfo/gcc Main Page: http://www.riscos.info/index.php/GCCSDK
