diff options
| author | Michael Kuperstein <michael.m.kuperstein@intel.com> | 2015-03-24 12:56:59 +0000 |
|---|---|---|
| committer | Michael Kuperstein <michael.m.kuperstein@intel.com> | 2015-03-24 12:56:59 +0000 |
| commit | 29704e7fb425a9cdf0e134996be3c0302a71feed (patch) | |
| tree | d198e67a086ed876f28bdbfd6f6156f8da2032f3 /llvm/lib/MC | |
| parent | d5cc45f192cbc1d6ad2566cbf999e1edfb3a525a (diff) | |
| download | bcm5719-llvm-29704e7fb425a9cdf0e134996be3c0302a71feed.tar.gz bcm5719-llvm-29704e7fb425a9cdf0e134996be3c0302a71feed.zip | |
Revert "Use std::bitset for SubtargetFeatures"
This reverts commit r233055.
It still causes buildbot failures (gcc running out of memory on several platforms, and a self-host failure on arm), although less than the previous time.
llvm-svn: 233068
Diffstat (limited to 'llvm/lib/MC')
| -rw-r--r-- | llvm/lib/MC/MCSubtargetInfo.cpp | 9 | ||||
| -rw-r--r-- | llvm/lib/MC/SubtargetFeature.cpp | 23 |
2 files changed, 13 insertions, 19 deletions
diff --git a/llvm/lib/MC/MCSubtargetInfo.cpp b/llvm/lib/MC/MCSubtargetInfo.cpp index aed91c5cadf..ca3894b29d3 100644 --- a/llvm/lib/MC/MCSubtargetInfo.cpp +++ b/llvm/lib/MC/MCSubtargetInfo.cpp @@ -63,19 +63,14 @@ MCSubtargetInfo::InitMCSubtargetInfo(StringRef TT, StringRef C, StringRef FS, /// ToggleFeature - Toggle a feature and returns the re-computed feature /// bits. This version does not change the implied bits. -FeatureBitset MCSubtargetInfo::ToggleFeature(uint64_t FB) { - FeatureBits.flip(FB); - return FeatureBits; -} - -FeatureBitset MCSubtargetInfo::ToggleFeature(const FeatureBitset &FB) { +uint64_t MCSubtargetInfo::ToggleFeature(uint64_t FB) { FeatureBits ^= FB; return FeatureBits; } /// ToggleFeature - Toggle a feature and returns the re-computed feature /// bits. This version will also change all implied bits. -FeatureBitset MCSubtargetInfo::ToggleFeature(StringRef FS) { +uint64_t MCSubtargetInfo::ToggleFeature(StringRef FS) { SubtargetFeatures Features; FeatureBits = Features.ToggleFeature(FeatureBits, FS, ProcFeatures); return FeatureBits; diff --git a/llvm/lib/MC/SubtargetFeature.cpp b/llvm/lib/MC/SubtargetFeature.cpp index 2740839cd99..587be5427aa 100644 --- a/llvm/lib/MC/SubtargetFeature.cpp +++ b/llvm/lib/MC/SubtargetFeature.cpp @@ -150,12 +150,12 @@ std::string SubtargetFeatures::getString() const { /// feature, set it. /// static -void SetImpliedBits(FeatureBitset &Bits, const SubtargetFeatureKV *FeatureEntry, +void SetImpliedBits(uint64_t &Bits, const SubtargetFeatureKV *FeatureEntry, ArrayRef<SubtargetFeatureKV> FeatureTable) { for (auto &FE : FeatureTable) { if (FeatureEntry->Value == FE.Value) continue; - if ((FeatureEntry->Implies & FE.Value).any()) { + if (FeatureEntry->Implies & FE.Value) { Bits |= FE.Value; SetImpliedBits(Bits, &FE, FeatureTable); } @@ -166,13 +166,12 @@ void SetImpliedBits(FeatureBitset &Bits, const SubtargetFeatureKV *FeatureEntry, /// feature, clear it. /// static -void ClearImpliedBits(FeatureBitset &Bits, - const SubtargetFeatureKV *FeatureEntry, +void ClearImpliedBits(uint64_t &Bits, const SubtargetFeatureKV *FeatureEntry, ArrayRef<SubtargetFeatureKV> FeatureTable) { for (auto &FE : FeatureTable) { if (FeatureEntry->Value == FE.Value) continue; - if ((FE.Implies & FeatureEntry->Value).any()) { + if (FE.Implies & FeatureEntry->Value) { Bits &= ~FE.Value; ClearImpliedBits(Bits, &FE, FeatureTable); } @@ -181,8 +180,8 @@ void ClearImpliedBits(FeatureBitset &Bits, /// ToggleFeature - Toggle a feature and returns the newly updated feature /// bits. -FeatureBitset -SubtargetFeatures::ToggleFeature(FeatureBitset Bits, StringRef Feature, +uint64_t +SubtargetFeatures::ToggleFeature(uint64_t Bits, StringRef Feature, ArrayRef<SubtargetFeatureKV> FeatureTable) { // Find feature in table. @@ -192,6 +191,7 @@ SubtargetFeatures::ToggleFeature(FeatureBitset Bits, StringRef Feature, if (FeatureEntry) { if ((Bits & FeatureEntry->Value) == FeatureEntry->Value) { Bits &= ~FeatureEntry->Value; + // For each feature that implies this, clear it. ClearImpliedBits(Bits, FeatureEntry, FeatureTable); } else { @@ -212,13 +212,13 @@ SubtargetFeatures::ToggleFeature(FeatureBitset Bits, StringRef Feature, /// getFeatureBits - Get feature bits a CPU. /// -FeatureBitset +uint64_t SubtargetFeatures::getFeatureBits(StringRef CPU, ArrayRef<SubtargetFeatureKV> CPUTable, ArrayRef<SubtargetFeatureKV> FeatureTable) { if (CPUTable.empty() || FeatureTable.empty()) - return FeatureBitset(); + return 0; #ifndef NDEBUG for (size_t i = 1, e = CPUTable.size(); i != e; ++i) { @@ -230,8 +230,7 @@ SubtargetFeatures::getFeatureBits(StringRef CPU, "CPU features table is not sorted"); } #endif - // Resulting bits - FeatureBitset Bits; + uint64_t Bits = 0; // Resulting bits // Check if help is needed if (CPU == "help") @@ -248,7 +247,7 @@ SubtargetFeatures::getFeatureBits(StringRef CPU, // Set the feature implied by this CPU feature, if any. for (auto &FE : FeatureTable) { - if ((CPUEntry->Value & FE.Value).any()) + if (CPUEntry->Value & FE.Value) SetImpliedBits(Bits, &FE, FeatureTable); } } else { |

