diff options
| author | vegecode <justin.b.alexander1@gmail.com> | 2019-04-07 22:17:21 -0500 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2019-04-10 12:35:16 -0400 |
| commit | aff2e47821aaad5cac74ed8a3cac2e72283b594b (patch) | |
| tree | a34d36b0b6a4e628a5be0bb883e03607bf877194 /src | |
| parent | dea1027f9799e6ce0f7f2594c6b555d9675c281a (diff) | |
| download | zig-aff2e47821aaad5cac74ed8a3cac2e72283b594b.tar.gz zig-aff2e47821aaad5cac74ed8a3cac2e72283b594b.zip | |
compiler-rt: correct use_thumb_1 flag
The flag is for generating correct arm-thumb interwork veneers in the
assembly code __aeabi_{memcpy,memset,etc} functions.
Armv6m only does thumb code generation regardless of whether arm or
thumb is selected and armv6t2 uses the newer thumb 2 set. All other
versions that zig supports pre-armv7 need the veneers and hence the
flag. Armv5 is actually armv5t.
Relevant code from clang/lib/Basic/Targets/Arm.cpp
```c
bool ARMTargetInfo::isThumb() const {
return ArchISA == llvm::ARM::ISAKind::THUMB;
}
bool ARMTargetInfo::supportsThumb() const {
return CPUAttr.count('T') || ArchVersion >= 6;
}
bool ARMTargetInfo::supportsThumb2() const {
return CPUAttr.equals("6T2") ||
(ArchVersion >= 7 && !CPUAttr.equals("8M_BASE"));
}
```
Also see
http://www.llvm.org/svn/llvm-project/llvm/trunk/lib/Target/ARM/ARM.td
Diffstat (limited to 'src')
0 files changed, 0 insertions, 0 deletions
