[llvm-dev] Error compiling libc++ for ARMv6

Ahmed Bougacha via llvm-dev llvm-dev at lists.llvm.org
Fri Sep 25 17:18:54 PDT 2015


On Fri, Sep 25, 2015 at 2:17 PM, JF Bastien <jfb at google.com> wrote:
> Looks like this was caused by r248294. Author CC'ed.
>
> On Fri, Sep 25, 2015 at 1:46 PM, Richard Pennington via llvm-dev
> <llvm-dev at lists.llvm.org> wrote:
>>
>> Hi,
>>
>> I was compiling libc++ with a recent TOT (248571) and when I got to the
>> ARMv6, I got a code generation error in memory.cpp:
>>
>> fatal error: error in backend: Cannot select: intrinsic %llvm.arm.clrex
>> ecc: error: clang frontend command failed with exit code 70 (use -v to see
>> invocation)
>> clang version 3.8.0 (trunk)
>>
>> It looks as if the newly added emitAtomicCmpXchgNoStoreLLBalance()
>> function is the culprit.  Does this seem like a resaonable fix, or do I need
>> to do something different for v6 and earlier?
>>
>> void ARMTargetLowering::emitAtomicCmpXchgNoStoreLLBalance(
>>     IRBuilder<> &Builder) const {
>>   if (Subtarget->hasV7Ops()) {
>>     Module *M = Builder.GetInsertBlock()->getParent()->getParent();
>>     Builder.CreateCall(llvm::Intrinsic::getDeclaration(M,
>> Intrinsic::arm_clrex));
>>   }
>> }

For v6, I guess we could do a fake strex to some dummy global?

Anyway, r248640, sorry about that!

-Ahmed

>> -Rich
>> _______________________________________________
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
>


More information about the llvm-dev mailing list