[PATCH, AArch64, v3 4/6] aarch64: Add out-of-line functions for LSE atomics
Kyrill Tkachov
kyrylo.tkachov@foss.arm.com
Thu Sep 5 12:53:00 GMT 2019
On 9/5/19 1:12 PM, Richard Henderson wrote:
> On 9/5/19 3:00 AM, Kyrill Tkachov wrote:
>>> +/* Define the symbol gating the LSE implementations. */
>>> +extern _Bool __aa64_have_atomics
>>> +Â Â Â __attribute__((visibility("hidden"), nocommon));
>>> +
>> Bootstrapping this patch series on an Armv8-A system with OOL atomics enabled
>> by default gave me link errors
>>
>> when building libgomp about __aa64_have_atomics being undefined.
>>
>> I haven't followed the series from the start so maybe I'm missing some things,
>> but I don't see where this variable is supposed to "live"?
> Removing the extern here is the correct fix.
>
> Obviously the v3 patch set conversion from C to assembly wasn't properly
> tested, or I made some last-minute changes before posting. Time has erased
> that memory.
>
>> Removing the 'extern' from here allows the bootstrap to proceed but it fails at
>> a later stage with bizzare errors like:
>>
>> In file included from build/gencondmd.c:51:
>> $SRC/gcc/config/aarch64/constraints.md: In function âbool
>> satisfies_constraint_S(rtx)â:
>> $SRC/gcc/config/aarch64/constraints.md:120:10: error: âCâ was not declared in
>> this scope; did you mean âPCâ?
>> Â 120 | (define_constraint "Y"
>> Â Â Â Â Â |Â Â Â Â Â Â Â Â Â ^
>> Â Â Â Â Â |Â Â Â Â Â Â Â Â Â PC
>>
>> which looks like a miscompilation of sorts.
> I noticed a couple of typos in the assembly that used the wrong register form
> (wN vs xN) on the LSE instructions. By chance were you testing on a system
> with LSE instructions enabled?
No, it was an Armv8.0-A system without LSE.
If you need help with testing I'd be happy to help!
Kyrill
>
>
> r~
More information about the Gcc-patches
mailing list