|
From: | Carlos Montiers |
Subject: | Re: [Tinycc-devel] cleanups |
Date: | Mon, 3 Oct 2016 10:43:58 -0300 |
grischka wrote:
Daniel Glöckner wrote:
Hi,
On Sat, Oct 01, 2016 at 09:03:47PM +0200, grischka wrote:
I did push some cleanups to prepare for a release 0.9.27,
eventually. Just if you wonder what's the point of that.
I'd vote for applying Balazs' patches from August 25 ("Incorrect
function call code on ARMv6") before the release. Unless of course
someone can prove that the second patch breaks something.
Let's see ... :
http://repo.or.cz/tinycc.git/commitdiff/49d3118621a68f658322 8f123efd16f0f803d908
Ok, have seen it: crash in "make test".
I did something different now. It's not nice but maybe works.
It would just run a second pass in copy_params to reload registers
that have been saved on stack by accident.
http://repo.or.cz/tinycc.git/commitdiff/5805b07218aef3c1049b 5db9d89841d383ee917d
--- grischka
test code:
unsigned int x = 0x44444444, *xx[1] = { &x };
unsigned long long y = 0xaaaaaaaabbbbbbbb, *yy[1] = { &y };
void foo(long long y, int x);
int main(void)
{
foo(**yy, **xx);
return 0;
}
objdump:
0: e1a0c00d mov ip, sp
4: e92d5800 push {fp, ip, lr}
8: e1a0b00d mov fp, sp
c: e24bd008 sub sp, fp, #8
10: e59fe000 ldr lr, [pc] ; 18 <main+0x18>
14: ea000000 b 1c <main+0x1c>
18: 00000000 andeq r0, r0, r0
1c: e59e0000 ldr r0, [lr]
20: e59fe000 ldr lr, [pc] ; 28 <main+0x28>
24: ea000000 b 2c <main+0x2c>
28: 00000000 andeq r0, r0, r0
2c: e59e1000 ldr r1, [lr]
30: e5912000 ldr r2, [r1] <-- r2 prepared as argument
34: e50b2004 str r2, [fp, #-4] <-- r2 saved on stack
38: e5901000 ldr r1, [r0]
3c: e2800004 add r0, r0, #4
40: e5902000 ldr r2, [r0]
44: e50b1008 str r1, [fp, #-8]
48: e1a01002 mov r1, r2
4c: e51b0008 ldr r0, [fp, #-8]
50: e51b2004 ldr r2, [fp, #-4] <-- reloaded in second pass
54: ebfffffe bl 0 <foo>
58: e3a00000 mov r0, #0
5c: e89ba800 ldm fp, {fp, sp, pc}
_______________________________________________
Tinycc-devel mailing list
address@hidden
https://lists.nongnu.org/mailman/listinfo/tinycc-devel
[Prev in Thread] | Current Thread | [Next in Thread] |