[llvm-commits] [llvm] r134219 - in /llvm/trunk: include/llvm/MC/SubtargetFeature.h lib/MC/SubtargetFeature.cpp

Evan Cheng evan.cheng at apple.com
Fri Jul 1 09:55:00 PDT 2011


Sorry about the breakage. I had fixed it but forgot to check it in. 

Evan

On Jul 1, 2011, at 2:26 AM, Francois Pichet wrote:

> I think r134236 should fix the valgrind. It was causing a bunch of
> MSVC failure too.
> Another StringRef misuse.
> 
> On Fri, Jul 1, 2011 at 5:01 AM, Cameron Zwarich <zwarich at apple.com> wrote:
>> It looks like this is causing the Valgrind bot failures:
>> http://google1.osuosl.org:8011/builders/llvm-x86_64-linux-vg_leak/builds/1387
>> Cameron
>> On 2011-06-30, at 5:23 PM, Evan Cheng wrote:
>> 
>> Author: evancheng
>> Date: Thu Jun 30 19:23:10 2011
>> New Revision: 134219
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=134219&view=rev
>> Log:
>> Switch SubtargetFeatures from std::string to StringRef.
>> 
>> Modified:
>>    llvm/trunk/include/llvm/MC/SubtargetFeature.h
>>    llvm/trunk/lib/MC/SubtargetFeature.cpp
>> 
>> Modified: llvm/trunk/include/llvm/MC/SubtargetFeature.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/MC/SubtargetFeature.h?rev=134219&r1=134218&r2=134219&view=diff
>> ==============================================================================
>> --- llvm/trunk/include/llvm/MC/SubtargetFeature.h (original)
>> +++ llvm/trunk/include/llvm/MC/SubtargetFeature.h Thu Jun 30 19:23:10 2011
>> @@ -18,13 +18,13 @@
>> #ifndef LLVM_MC_SUBTARGETFEATURE_H
>> #define LLVM_MC_SUBTARGETFEATURE_H
>> 
>> -#include <string>
>> #include <vector>
>> #include "llvm/ADT/Triple.h"
>> #include "llvm/Support/DataTypes.h"
>> 
>> namespace llvm {
>>   class raw_ostream;
>> +  class StringRef;
>> 
>> //===----------------------------------------------------------------------===//
>> ///
>> @@ -74,24 +74,23 @@
>> class SubtargetFeatures {
>>   std::vector<std::string> Features;    // Subtarget features as a vector
>> public:
>> -  explicit SubtargetFeatures(const std::string &Initial = std::string());
>> +  explicit SubtargetFeatures(const StringRef Initial = "");
>> 
>>   /// Features string accessors.
>> -  std::string getString() const;
>> -  void setString(const std::string &Initial);
>> +  StringRef getString() const;
>> 
>>   /// Adding Features.
>> -  void AddFeature(const std::string &String, bool IsEnabled = true);
>> +  void AddFeature(const StringRef String, bool IsEnabled = true);
>> 
>>   /// Get feature bits of a CPU.
>> -  uint64_t getFeatureBits(const std::string &CPU,
>> +  uint64_t getFeatureBits(const StringRef CPU,
>>                           const SubtargetFeatureKV *CPUTable,
>>                           size_t CPUTableSize,
>>                           const SubtargetFeatureKV *FeatureTable,
>>                           size_t FeatureTableSize);
>> 
>>   /// Get scheduling itinerary of a CPU.
>> -  void *getItinerary(const std::string &CPU,
>> +  void *getItinerary(const StringRef CPU,
>>                      const SubtargetInfoKV *Table, size_t TableSize);
>> 
>>   /// Print feature string.
>> 
>> Modified: llvm/trunk/lib/MC/SubtargetFeature.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/SubtargetFeature.cpp?rev=134219&r1=134218&r2=134219&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/MC/SubtargetFeature.cpp (original)
>> +++ llvm/trunk/lib/MC/SubtargetFeature.cpp Thu Jun 30 19:23:10 2011
>> @@ -27,7 +27,7 @@
>> 
>> /// hasFlag - Determine if a feature has a flag; '+' or '-'
>> ///
>> -static inline bool hasFlag(const std::string &Feature) {
>> +static inline bool hasFlag(const StringRef Feature) {
>>   assert(!Feature.empty() && "Empty string");
>>   // Get first character
>>   char Ch = Feature[0];
>> @@ -37,13 +37,13 @@
>> 
>> /// StripFlag - Return string stripped of flag.
>> ///
>> -static inline std::string StripFlag(const std::string &Feature) {
>> +static inline std::string StripFlag(const StringRef Feature) {
>>   return hasFlag(Feature) ? Feature.substr(1) : Feature;
>> }
>> 
>> /// isEnabled - Return true if enable flag; '+'.
>> ///
>> -static inline bool isEnabled(const std::string &Feature) {
>> +static inline bool isEnabled(const StringRef Feature) {
>>   assert(!Feature.empty() && "Empty string");
>>   // Get first character
>>   char Ch = Feature[0];
>> @@ -53,16 +53,19 @@
>> 
>> /// PrependFlag - Return a string with a prepended flag; '+' or '-'.
>> ///
>> -static inline std::string PrependFlag(const std::string &Feature,
>> -                                      bool IsEnabled) {
>> +static inline StringRef PrependFlag(const StringRef Feature,
>> +                                    bool IsEnabled) {
>>   assert(!Feature.empty() && "Empty string");
>> -  if (hasFlag(Feature)) return Feature;
>> -  return std::string(IsEnabled ? "+" : "-") + Feature;
>> +  if (hasFlag(Feature))
>> +    return Feature;
>> +  std::string Prefix = IsEnabled ? "+" : "-";
>> +  Prefix += Feature;
>> +  return StringRef(Prefix);
>> }
>> 
>> /// Split - Splits a string of comma separated items in to a vector of
>> strings.
>> ///
>> -static void Split(std::vector<std::string> &V, const std::string &S) {
>> +static void Split(std::vector<std::string> &V, const StringRef S) {
>>   if (S.empty())
>>     return;
>> 
>> @@ -106,7 +109,7 @@
>> }
>> 
>> /// Adding features.
>> -void SubtargetFeatures::AddFeature(const std::string &String,
>> +void SubtargetFeatures::AddFeature(const StringRef String,
>>                                    bool IsEnabled) {
>>   // Don't add empty features
>>   if (!String.empty()) {
>> @@ -116,10 +119,10 @@
>> }
>> 
>> /// Find KV in array using binary search.
>> -template<typename T> const T *Find(const std::string &S, const T *A, size_t
>> L) {
>> +template<typename T> const T *Find(const StringRef S, const T *A, size_t L)
>> {
>>   // Make the lower bound element we're looking for
>>   T KV;
>> -  KV.Key = S.c_str();
>> +  KV.Key = S.data();
>>   // Determine the end of the array
>>   const T *Hi = A + L;
>>   // Binary search the array
>> @@ -173,21 +176,15 @@
>> //                    SubtargetFeatures Implementation
>> //===----------------------------------------------------------------------===//
>> 
>> -SubtargetFeatures::SubtargetFeatures(const std::string &Initial) {
>> +SubtargetFeatures::SubtargetFeatures(const StringRef Initial) {
>>   // Break up string into separate features
>>   Split(Features, Initial);
>> }
>> 
>> 
>> -std::string SubtargetFeatures::getString() const {
>> +StringRef SubtargetFeatures::getString() const {
>>   return Join(Features);
>> }
>> -void SubtargetFeatures::setString(const std::string &Initial) {
>> -  // Throw out old features
>> -  Features.clear();
>> -  // Break up string into separate features
>> -  Split(Features, LowercaseString(Initial));
>> -}
>> 
>> /// SetImpliedBits - For each feature that is (transitively) implied by this
>> /// feature, set it.
>> @@ -229,7 +226,7 @@
>> 
>> /// getFeatureBits - Get feature bits a CPU.
>> ///
>> -uint64_t SubtargetFeatures::getFeatureBits(const std::string &CPU,
>> +uint64_t SubtargetFeatures::getFeatureBits(const StringRef CPU,
>>                                          const SubtargetFeatureKV *CPUTable,
>>                                          size_t CPUTableSize,
>>                                          const SubtargetFeatureKV
>> *FeatureTable,
>> @@ -272,7 +269,7 @@
>>   }
>>   // Iterate through each feature
>>   for (size_t i = 0, E = Features.size(); i < E; i++) {
>> -    const std::string &Feature = Features[i];
>> +    const StringRef Feature = Features[i];
>> 
>>     // Check for help
>>     if (Feature == "+help")
>> @@ -306,7 +303,7 @@
>> }
>> 
>> /// Get scheduling itinerary of a CPU.
>> -void *SubtargetFeatures::getItinerary(const std::string &CPU,
>> +void *SubtargetFeatures::getItinerary(const StringRef CPU,
>>                                       const SubtargetInfoKV *Table,
>>                                       size_t TableSize) {
>>   assert(Table && "missing table");
>> 
>> 
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>> 
>> 
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>> 
>> 




More information about the llvm-commits mailing list