mirror of
https://git.proxmox.com/git/llvm-toolchain
synced 2025-06-12 16:00:12 +00:00
39 lines
1.5 KiB
Diff
39 lines
1.5 KiB
Diff
Index: llvm-toolchain-snapshot_3.8~svn242701/clang/lib/Basic/Targets.cpp
|
|
===================================================================
|
|
--- llvm-toolchain-snapshot_3.8~svn242701.orig/clang/lib/Basic/Targets.cpp
|
|
+++ llvm-toolchain-snapshot_3.8~svn242701/clang/lib/Basic/Targets.cpp
|
|
@@ -4325,33 +4325,6 @@ class ARMTargetInfo : public TargetInfo
|
|
}
|
|
}
|
|
|
|
- static bool shouldUseInlineAtomic(const llvm::Triple &T) {
|
|
- // On linux, binaries targeting old cpus call functions in libgcc to
|
|
- // perform atomic operations. The implementation in libgcc then calls into
|
|
- // the kernel which on armv6 and newer uses ldrex and strex. The net result
|
|
- // is that if we assume the kernel is at least as recent as the hardware,
|
|
- // it is safe to use atomic instructions on armv6 and newer.
|
|
- if (T.getOS() != llvm::Triple::Linux)
|
|
- return false;
|
|
- StringRef ArchName = T.getArchName();
|
|
- if (T.getArch() == llvm::Triple::arm) {
|
|
- if (!ArchName.startswith("armv"))
|
|
- return false;
|
|
- StringRef VersionStr = ArchName.substr(4);
|
|
- unsigned Version;
|
|
- if (VersionStr.getAsInteger(10, Version))
|
|
- return false;
|
|
- return Version >= 6;
|
|
- }
|
|
- assert(T.getArch() == llvm::Triple::thumb);
|
|
- if (!ArchName.startswith("thumbv"))
|
|
- return false;
|
|
- StringRef VersionStr = ArchName.substr(6);
|
|
- unsigned Version;
|
|
- if (VersionStr.getAsInteger(10, Version))
|
|
- return false;
|
|
- return Version >= 7;
|
|
- }
|
|
|
|
public:
|
|
ARMTargetInfo(const llvm::Triple &Triple, bool IsBigEndian)
|