Index: llvm/include/llvm/ADT/SmallVector.h =================================================================== --- llvm/include/llvm/ADT/SmallVector.h +++ llvm/include/llvm/ADT/SmallVector.h @@ -125,13 +125,13 @@ using const_pointer = const T *; // forward iterator creation methods. - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED iterator begin() { return (iterator)this->BeginX; } - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED const_iterator begin() const { return (const_iterator)this->BeginX; } - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED iterator end() { return begin() + size(); } - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED const_iterator end() const { return begin() + size(); } // reverse iterator creation methods. @@ -150,12 +150,12 @@ /// Return a pointer to the vector's buffer, even if empty(). const_pointer data() const { return const_pointer(begin()); } - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED reference operator[](size_type idx) { assert(idx < size()); return begin()[idx]; } - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED const_reference operator[](size_type idx) const { assert(idx < size()); return begin()[idx]; Index: llvm/include/llvm/ADT/StringRef.h =================================================================== --- llvm/include/llvm/ADT/StringRef.h +++ llvm/include/llvm/ADT/StringRef.h @@ -63,7 +63,7 @@ // Workaround memcmp issue with null pointers (undefined behavior) // by providing a specialized version - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED static int compareMemory(const char *Lhs, const char *Rhs, size_t Length) { if (Length == 0) { return 0; } return ::memcmp(Lhs,Rhs,Length); @@ -81,17 +81,17 @@ StringRef(std::nullptr_t) = delete; /// Construct a string ref from a cstring. - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED /*implicit*/ StringRef(const char *Str) : Data(Str), Length(Str ? ::strlen(Str) : 0) {} /// Construct a string ref from a pointer and length. - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED /*implicit*/ constexpr StringRef(const char *data, size_t length) : Data(data), Length(length) {} /// Construct a string ref from an std::string. - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED /*implicit*/ StringRef(const std::string &Str) : Data(Str.data()), Length(Str.length()) {} @@ -124,17 +124,17 @@ /// data - Get a pointer to the start of the string (which may not be null /// terminated). LLVM_NODISCARD - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED const char *data() const { return Data; } /// empty - Check if the string is empty. LLVM_NODISCARD - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED bool empty() const { return Length == 0; } /// size - Get the string size. LLVM_NODISCARD - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED size_t size() const { return Length; } /// front - Get the first character in the string. @@ -165,7 +165,7 @@ /// equals - Check for string equality, this is more efficient than /// compare() when the relative ordering of inequal strings isn't needed. LLVM_NODISCARD - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED bool equals(StringRef RHS) const { return (Length == RHS.Length && compareMemory(Data, RHS.Data, RHS.Length) == 0); @@ -180,7 +180,7 @@ /// compare - Compare two strings; the result is -1, 0, or 1 if this string /// is lexicographically less than, equal to, or greater than the \p RHS. LLVM_NODISCARD - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED int compare(StringRef RHS) const { // Check the prefix for a mismatch. if (int Res = compareMemory(Data, RHS.Data, std::min(Length, RHS.Length))) @@ -263,7 +263,7 @@ /// Check if this string starts with the given \p Prefix. LLVM_NODISCARD - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED bool startswith(StringRef Prefix) const { return Length >= Prefix.Length && compareMemory(Data, Prefix.Data, Prefix.Length) == 0; @@ -275,7 +275,7 @@ /// Check if this string ends with the given \p Suffix. LLVM_NODISCARD - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED bool endswith(StringRef Suffix) const { return Length >= Suffix.Length && compareMemory(end() - Suffix.Length, Suffix.Data, Suffix.Length) == 0; @@ -294,7 +294,7 @@ /// \returns The index of the first occurrence of \p C, or npos if not /// found. LLVM_NODISCARD - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED size_t find(char C, size_t From = 0) const { size_t FindBegin = std::min(From, Length); if (FindBegin < Length) { // Avoid calling memchr with nullptr. @@ -317,7 +317,7 @@ /// \returns The index of the first character satisfying \p F starting from /// \p From, or npos if not found. LLVM_NODISCARD - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED size_t find_if(function_ref F, size_t From = 0) const { StringRef S = drop_front(From); while (!S.empty()) { @@ -333,7 +333,7 @@ /// \returns The index of the first character not satisfying \p F starting /// from \p From, or npos if not found. LLVM_NODISCARD - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED size_t find_if_not(function_ref F, size_t From = 0) const { return find_if([F](char c) { return !F(c); }, From); } @@ -444,19 +444,19 @@ /// Return true if the given string is a substring of *this, and false /// otherwise. LLVM_NODISCARD - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED bool contains(StringRef Other) const { return find(Other) != npos; } /// Return true if the given character is contained in *this, and false /// otherwise. LLVM_NODISCARD - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED bool contains(char C) const { return find_first_of(C) != npos; } /// Return true if the given string is a substring of *this, and false /// otherwise. LLVM_NODISCARD - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED bool contains_lower(StringRef Other) const { return find_lower(Other) != npos; } @@ -464,7 +464,7 @@ /// Return true if the given character is contained in *this, and false /// otherwise. LLVM_NODISCARD - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED bool contains_lower(char C) const { return find_lower(C) != npos; } /// @} @@ -594,7 +594,7 @@ /// exceeds the number of characters remaining in the string, the string /// suffix (starting with \p Start) will be returned. LLVM_NODISCARD - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED StringRef substr(size_t Start, size_t N = npos) const { Start = std::min(Start, Length); return StringRef(Data + Start, std::min(N, Length - Start)); @@ -604,7 +604,7 @@ /// elements remaining. If \p N is greater than the length of the /// string, the entire string is returned. LLVM_NODISCARD - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED StringRef take_front(size_t N = 1) const { if (N >= size()) return *this; @@ -615,7 +615,7 @@ /// elements remaining. If \p N is greater than the length of the /// string, the entire string is returned. LLVM_NODISCARD - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED StringRef take_back(size_t N = 1) const { if (N >= size()) return *this; @@ -625,7 +625,7 @@ /// Return the longest prefix of 'this' such that every character /// in the prefix satisfies the given predicate. LLVM_NODISCARD - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED StringRef take_while(function_ref F) const { return substr(0, find_if_not(F)); } @@ -633,7 +633,7 @@ /// Return the longest prefix of 'this' such that no character in /// the prefix satisfies the given predicate. LLVM_NODISCARD - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED StringRef take_until(function_ref F) const { return substr(0, find_if(F)); } @@ -641,7 +641,7 @@ /// Return a StringRef equal to 'this' but with the first \p N elements /// dropped. LLVM_NODISCARD - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED StringRef drop_front(size_t N = 1) const { assert(size() >= N && "Dropping more elements than exist"); return substr(N); @@ -650,7 +650,7 @@ /// Return a StringRef equal to 'this' but with the last \p N elements /// dropped. LLVM_NODISCARD - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED StringRef drop_back(size_t N = 1) const { assert(size() >= N && "Dropping more elements than exist"); return substr(0, size()-N); @@ -659,7 +659,7 @@ /// Return a StringRef equal to 'this', but with all characters satisfying /// the given predicate dropped from the beginning of the string. LLVM_NODISCARD - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED StringRef drop_while(function_ref F) const { return substr(find_if_not(F)); } @@ -667,14 +667,14 @@ /// Return a StringRef equal to 'this', but with all characters not /// satisfying the given predicate dropped from the beginning of the string. LLVM_NODISCARD - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED StringRef drop_until(function_ref F) const { return substr(find_if(F)); } /// Returns true if this StringRef has the given prefix and removes that /// prefix. - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED bool consume_front(StringRef Prefix) { if (!startswith(Prefix)) return false; @@ -685,7 +685,7 @@ /// Returns true if this StringRef has the given suffix and removes that /// suffix. - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED bool consume_back(StringRef Suffix) { if (!endswith(Suffix)) return false; @@ -706,7 +706,7 @@ /// will be returned. If this is less than \p Start, an empty string will /// be returned. LLVM_NODISCARD - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED StringRef slice(size_t Start, size_t End) const { Start = std::min(Start, Length); End = std::min(std::max(Start, End), Length); @@ -894,12 +894,12 @@ /// @name StringRef Comparison Operators /// @{ - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED inline bool operator==(StringRef LHS, StringRef RHS) { return LHS.equals(RHS); } - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED inline bool operator!=(StringRef LHS, StringRef RHS) { return !(LHS == RHS); } inline bool operator<(StringRef LHS, StringRef RHS) { Index: llvm/include/llvm/ADT/StringSwitch.h =================================================================== --- llvm/include/llvm/ADT/StringSwitch.h +++ llvm/include/llvm/ADT/StringSwitch.h @@ -49,7 +49,7 @@ Optional Result; public: - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED explicit StringSwitch(StringRef S) : Str(S), Result() { } @@ -66,7 +66,7 @@ ~StringSwitch() = default; // Case-sensitive case matchers - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED StringSwitch &Case(StringLiteral S, T Value) { if (!Result && Str == S) { Result = std::move(Value); @@ -74,7 +74,7 @@ return *this; } - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED StringSwitch& EndsWith(StringLiteral S, T Value) { if (!Result && Str.endswith(S)) { Result = std::move(Value); @@ -82,7 +82,7 @@ return *this; } - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED StringSwitch& StartsWith(StringLiteral S, T Value) { if (!Result && Str.startswith(S)) { Result = std::move(Value); @@ -90,51 +90,51 @@ return *this; } - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED StringSwitch &Cases(StringLiteral S0, StringLiteral S1, T Value) { return Case(S0, Value).Case(S1, Value); } - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED StringSwitch &Cases(StringLiteral S0, StringLiteral S1, StringLiteral S2, T Value) { return Case(S0, Value).Cases(S1, S2, Value); } - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED StringSwitch &Cases(StringLiteral S0, StringLiteral S1, StringLiteral S2, StringLiteral S3, T Value) { return Case(S0, Value).Cases(S1, S2, S3, Value); } - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED StringSwitch &Cases(StringLiteral S0, StringLiteral S1, StringLiteral S2, StringLiteral S3, StringLiteral S4, T Value) { return Case(S0, Value).Cases(S1, S2, S3, S4, Value); } - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED StringSwitch &Cases(StringLiteral S0, StringLiteral S1, StringLiteral S2, StringLiteral S3, StringLiteral S4, StringLiteral S5, T Value) { return Case(S0, Value).Cases(S1, S2, S3, S4, S5, Value); } - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED StringSwitch &Cases(StringLiteral S0, StringLiteral S1, StringLiteral S2, StringLiteral S3, StringLiteral S4, StringLiteral S5, StringLiteral S6, T Value) { return Case(S0, Value).Cases(S1, S2, S3, S4, S5, S6, Value); } - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED StringSwitch &Cases(StringLiteral S0, StringLiteral S1, StringLiteral S2, StringLiteral S3, StringLiteral S4, StringLiteral S5, StringLiteral S6, StringLiteral S7, T Value) { return Case(S0, Value).Cases(S1, S2, S3, S4, S5, S6, S7, Value); } - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED StringSwitch &Cases(StringLiteral S0, StringLiteral S1, StringLiteral S2, StringLiteral S3, StringLiteral S4, StringLiteral S5, StringLiteral S6, StringLiteral S7, StringLiteral S8, @@ -142,7 +142,7 @@ return Case(S0, Value).Cases(S1, S2, S3, S4, S5, S6, S7, S8, Value); } - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED StringSwitch &Cases(StringLiteral S0, StringLiteral S1, StringLiteral S2, StringLiteral S3, StringLiteral S4, StringLiteral S5, StringLiteral S6, StringLiteral S7, StringLiteral S8, @@ -151,7 +151,7 @@ } // Case-insensitive case matchers. - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED StringSwitch &CaseLower(StringLiteral S, T Value) { if (!Result && Str.equals_lower(S)) Result = std::move(Value); @@ -159,7 +159,7 @@ return *this; } - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED StringSwitch &EndsWithLower(StringLiteral S, T Value) { if (!Result && Str.endswith_lower(S)) Result = Value; @@ -167,7 +167,7 @@ return *this; } - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED StringSwitch &StartsWithLower(StringLiteral S, T Value) { if (!Result && Str.startswith_lower(S)) Result = std::move(Value); @@ -175,31 +175,31 @@ return *this; } - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED StringSwitch &CasesLower(StringLiteral S0, StringLiteral S1, T Value) { return CaseLower(S0, Value).CaseLower(S1, Value); } - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED StringSwitch &CasesLower(StringLiteral S0, StringLiteral S1, StringLiteral S2, T Value) { return CaseLower(S0, Value).CasesLower(S1, S2, Value); } - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED StringSwitch &CasesLower(StringLiteral S0, StringLiteral S1, StringLiteral S2, StringLiteral S3, T Value) { return CaseLower(S0, Value).CasesLower(S1, S2, S3, Value); } - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED StringSwitch &CasesLower(StringLiteral S0, StringLiteral S1, StringLiteral S2, StringLiteral S3, StringLiteral S4, T Value) { return CaseLower(S0, Value).CasesLower(S1, S2, S3, S4, Value); } LLVM_NODISCARD - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED R Default(T Value) { if (Result) return std::move(*Result); @@ -207,7 +207,7 @@ } LLVM_NODISCARD - LLVM_ATTRIBUTE_ALWAYS_INLINE + LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_USED operator R() { assert(Result && "Fell off the end of a string-switch"); return std::move(*Result);