| Index: lib/Basic/Targets.cpp
|
| diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp
|
| index 2709d8ee2c20a92b371e20bbc6a269fc18b01e57..6b920e7593ad161c94157c44a521709357eb8741 100644
|
| --- a/lib/Basic/Targets.cpp
|
| +++ b/lib/Basic/Targets.cpp
|
| @@ -3529,34 +3529,6 @@ class ARMTargetInfo : public TargetInfo {
|
|
|
| static const Builtin::Info BuiltinInfo[];
|
|
|
| - 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 std::string &TripleStr)
|
| : TargetInfo(TripleStr), ABI("aapcs-linux"), CPU("arm1136j-s"), IsAAPCS(true)
|
| @@ -3589,9 +3561,8 @@ public:
|
| TheCXXABI.set(TargetCXXABI::GenericARM);
|
|
|
| // ARM has atomics up to 8 bytes
|
| + // FIXME: Set MaxAtomicInlineWidth if we have the feature v6e
|
| MaxAtomicPromoteWidth = 64;
|
| - if (shouldUseInlineAtomic(getTriple()))
|
| - MaxAtomicInlineWidth = 64;
|
|
|
| // Do force alignment of members that follow zero length bitfields. If
|
| // the alignment of the zero-length bitfield is greater than the member
|
|
|