boostorg / boostorg/predef

ARM 32/64 bit logic & version?

Open
#129 0 comments 0 reactions 1 assignee Claimed by @grafikrobot View on GitHub
bug enhancement
Dominant language
C
Stars
56
Forks
87
PR merge metrics
No merged PRs in 30d

Description

The ARM macros define the version to 8 if `__aarch64__` is defined.
But I believe this is not correct: ARMv8 can run in aarch32 mode, where only `__arm__` and not `__aarch64__` is defined (and conversely, AArch64 mode does *not* define `__arm__`).

The correct thing I believe would be to use `__ARM_ARCH` which expands to e.g. 7 in ARMv7, 8 in ARMv8 etc for the version, and use the existence of `__arm__` / `__aarch64__` to distinguish between 32 & 64.

see repro: https://gcc.godbolt.org/z/xqqYWEaz6

ideally I would argue that AArch64 ought to be treated as an entirely different architecture, like PPC / PPC64

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.