r216662 - [ARM] Change default ABI for AArch32 to be "aapcs" (was "apcs-gnu")

Saleem Abdulrasool compnerd at compnerd.org
Tue Dec 9 20:14:49 PST 2014


On Tue, Dec 9, 2014 at 1:55 PM, Eric Christopher <echristo at gmail.com> wrote:

>
>
> On Fri Dec 05 2014 at 3:56:09 PM Eric Christopher <echristo at gmail.com>
> wrote:
>
>> Hi Oliver,
>>
>> I'm sorry for the thread archaeology, but I didn't see this when it went
>> in.
>>
>>
>>> [ARM] Change default ABI for AArch32 to be "aapcs" (was "apcs-gnu")
>>>
>>> The current default abi when no environment is given is "apcs-gnu",
>>> which is obsolete. This patch changes the default to "aapcs". "aapcs"
>>> has both
>>> hard- and soft-float variants, so the -mhard-float, -msoft-float and
>>> -mfloat-abi= options now all behave as expected when no environment is
>>> specified in the triple.
>>>
>>>
>> Is there an actual compelling reason to make this change? Does it get us
>> conformity with any other tools?
>>
>> As a note, you also didn't change the backend to match this which is
>> causing me some amount of annoyance in trying to get everything to agree.
>> I'm unraveling it, but it's taking some time. :)
>>
>>
>
> Ping? Do you have a reason for this change? Basically it means a lot of
> updating the back end if we want them to agree for no good reason so I'm of
> mind to revert this.
>

I feel like Oliver's change here is a good thing.  AAPCS has been around
for quite some time now and its time that tools moved on.  iOS is the only
environment that I can think of that uses APCS any longer (and I'd like to
say that we only support the variant used for that environment) as most
Linux distributions have switched AAPCS.

-eric
>
>
>> While writing this I also noticed that a preprocessor test claims to be
>>> checking darwin, but is actually checking the defaults, which are
>>> different for darwin.
>>>
>>>
>> Weird.
>>
>>
>>>
>>> -// RUN: %clang -target arm -arch armv7s -x c -E -dM %s -o - | FileCheck
>>> --check-prefix=ARM-DARWIN-NO-EABI %s
>>> -// RUN: %clang -target arm -arch armv6m -x c -E -dM %s -o - | FileCheck
>>> --check-prefix=ARM-DARWIN-NO-EABI %s
>>> -// RUN: %clang -target arm -arch armv7m -x c -E -dM %s -o - | FileCheck
>>> --check-prefix=ARM-DARWIN-NO-EABI %s
>>> -// RUN: %clang -target arm -arch armv7em -x c -E -dM %s -o - |
>>> FileCheck --check-prefix=ARM-DARWIN-NO-EABI %s
>>> +// RUN: %clang -target arm-apple-darwin-eabi -arch armv7s -x c -E -dM
>>> %s -o - | FileCheck --check-prefix=ARM-DARWIN-NO-EABI %s
>>> +// RUN: %clang -target arm-apple-darwin-eabi -arch armv6m -x c -E -dM
>>> %s -o - | FileCheck --check-prefix=ARM-DARWIN-EABI %s
>>> +// RUN: %clang -target arm-apple-darwin-eabi -arch armv7m -x c -E -dM
>>> %s -o - | FileCheck --check-prefix=ARM-DARWIN-EABI %s
>>> +// RUN: %clang -target arm-apple-darwin-eabi -arch armv7em -x c -E -dM
>>> %s -o - | FileCheck --check-prefix=ARM-DARWIN-EABI %s
>>>  // RUN: %clang -target thumbv7-apple-darwin-eabi -arch armv7 -x c -E
>>> -dM %s -o - | FileCheck --check-prefix=ARM-DARWIN-NO-EABI %s
>>>  // ARM-DARWIN-NO-EABI-NOT: #define __ARM_EABI__ 1
>>> +// ARM-DARWIN-EABI: #define __ARM_EABI__ 1
>>>
>>>
>> I don't think this change is quite correct, it would be better to use a
>> triple that acutally exists and then maybe -mabi instead? cc'ing Tim as he
>> put that part in originally.
>>
>> -eric
>>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
>


-- 
Saleem Abdulrasool
compnerd (at) compnerd (dot) org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20141209/24fc4769/attachment.html>


More information about the cfe-commits mailing list