Object file questions
Timo Sintonen via D.gnu
d.gnu at puremagic.com
Sun Aug 17 07:36:53 PDT 2014
On Sunday, 17 August 2014 at 13:59:03 UTC, Artur Skawina via
D.gnu wrote:
> On 08/17/14 15:44, Timo Sintonen via D.gnu wrote:
>
>> I am compiling for arm and I am sorry I misinterpreted the
>> optimized code. Actually the code is correct but it still does
>> not work.
>> The problem is that the call to get the tls pointer for
>> volatile_dummy seems to corrupt the register (r3) where the
>> this pointer is. The call is inside the while loop. After
>> removing tha call by hand in the assembly everything works. R3
>> is usually pushed into stack when it is used in a function. I
>> have to check what is wrong in this case.
>
> Does declaring it as:
>
> extern __gshared int volatile_dummy;
>
> help?
>
> artur
Yes, now it works.
But the register corruption is still an issue. My tls function
clearly uses r3 and does not save it.
Johannes, do you know the arm calling system? Is it caller or
callee that should save r3?
In this case it is my function that has one function inlined that
has another function inlined that contains a compiler generated
function call. Could this be a bug in the compiler that it does
not recognize the innermost call and does not save registers?
More information about the D.gnu
mailing list