diff --git a/llvm/include/llvm/ADT/APFloat.h b/llvm/include/llvm/ADT/APFloat.h index 300f83dcf9ef6..e1589544787cf 100644 --- a/llvm/include/llvm/ADT/APFloat.h +++ b/llvm/include/llvm/ADT/APFloat.h @@ -672,7 +672,9 @@ class IEEEFloat final { integerPart addSignificand(const IEEEFloat &); integerPart subtractSignificand(const IEEEFloat &, integerPart); - lostFraction addOrSubtractSignificand(const IEEEFloat &, bool subtract); + // Exported for IEEEFloatUnitTestHelper. + LLVM_ABI lostFraction addOrSubtractSignificand(const IEEEFloat &, + bool subtract); lostFraction multiplySignificand(const IEEEFloat &, IEEEFloat, bool ignoreAddend = false); lostFraction multiplySignificand(const IEEEFloat&); diff --git a/llvm/include/llvm/ADT/APInt.h b/llvm/include/llvm/ADT/APInt.h index fe48c60466e96..295506393a1c4 100644 --- a/llvm/include/llvm/ADT/APInt.h +++ b/llvm/include/llvm/ADT/APInt.h @@ -561,7 +561,7 @@ class [[nodiscard]] APInt { } /// Overload to compute a hash_code for an APInt value. - friend hash_code hash_value(const APInt &Arg); + LLVM_ABI friend hash_code hash_value(const APInt &Arg); /// This function returns a pointer to the internal storage of the APInt. /// This is useful for writing out the APInt in binary form without any diff --git a/llvm/include/llvm/ADT/DynamicAPInt.h b/llvm/include/llvm/ADT/DynamicAPInt.h index 48c5c6eac9013..ca010f836de6f 100644 --- a/llvm/include/llvm/ADT/DynamicAPInt.h +++ b/llvm/include/llvm/ADT/DynamicAPInt.h @@ -212,7 +212,7 @@ class DynamicAPInt { friend DynamicAPInt operator/(int64_t A, const DynamicAPInt &B); friend DynamicAPInt operator%(int64_t A, const DynamicAPInt &B); - friend hash_code hash_value(const DynamicAPInt &x); // NOLINT + LLVM_ABI friend hash_code hash_value(const DynamicAPInt &x); // NOLINT LLVM_ABI void static_assert_layout(); // NOLINT diff --git a/llvm/include/llvm/Support/ConvertUTF.h b/llvm/include/llvm/Support/ConvertUTF.h index 3bb238e7df2ed..bb1723518a490 100644 --- a/llvm/include/llvm/Support/ConvertUTF.h +++ b/llvm/include/llvm/Support/ConvertUTF.h @@ -346,9 +346,9 @@ LLVM_ABI bool convertUTF32ToUTF8String(ArrayRef Src, std::string &Out); LLVM_ABI bool convertUTF8ToUTF16String(StringRef SrcUTF8, SmallVectorImpl &DstUTF16); -bool IsSingleCodeUnitUTF8Codepoint(unsigned); -bool IsSingleCodeUnitUTF16Codepoint(unsigned); -bool IsSingleCodeUnitUTF32Codepoint(unsigned); +LLVM_ABI bool IsSingleCodeUnitUTF8Codepoint(unsigned); +LLVM_ABI bool IsSingleCodeUnitUTF16Codepoint(unsigned); +LLVM_ABI bool IsSingleCodeUnitUTF32Codepoint(unsigned); #if defined(_WIN32) namespace sys { diff --git a/llvm/include/llvm/Support/KnownFPClass.h b/llvm/include/llvm/Support/KnownFPClass.h index 9ebdf260e0ec7..b3c18bcf6b34b 100644 --- a/llvm/include/llvm/Support/KnownFPClass.h +++ b/llvm/include/llvm/Support/KnownFPClass.h @@ -15,6 +15,7 @@ #define LLVM_SUPPORT_KNOWNFPCLASS_H #include "llvm/ADT/FloatingPointMode.h" +#include "llvm/Support/Compiler.h" #include namespace llvm { @@ -78,13 +79,13 @@ struct KnownFPClass { /// Return true if it's know this can never be interpreted as a zero. This /// extends isKnownNeverZero to cover the case where the assumed /// floating-point mode for the function interprets denormals as zero. - bool isKnownNeverLogicalZero(DenormalMode Mode) const; + LLVM_ABI bool isKnownNeverLogicalZero(DenormalMode Mode) const; /// Return true if it's know this can never be interpreted as a negative zero. - bool isKnownNeverLogicalNegZero(DenormalMode Mode) const; + LLVM_ABI bool isKnownNeverLogicalNegZero(DenormalMode Mode) const; /// Return true if it's know this can never be interpreted as a positive zero. - bool isKnownNeverLogicalPosZero(DenormalMode Mode) const; + LLVM_ABI bool isKnownNeverLogicalPosZero(DenormalMode Mode) const; static constexpr FPClassTest OrderedLessThanZeroMask = fcNegSubnormal | fcNegNormal | fcNegInf; @@ -209,7 +210,7 @@ struct KnownFPClass { /// /// This assumes a copy-like operation and will replace any currently known /// information. - void propagateDenormal(const KnownFPClass &Src, DenormalMode Mode); + LLVM_ABI void propagateDenormal(const KnownFPClass &Src, DenormalMode Mode); /// Report known classes if \p Src is evaluated through a potentially /// canonicalizing operation. We can assume signaling nans will not be @@ -217,7 +218,8 @@ struct KnownFPClass { /// /// This assumes a copy-like operation and will replace any currently known /// information. - void propagateCanonicalizingSrc(const KnownFPClass &Src, DenormalMode Mode); + LLVM_ABI void propagateCanonicalizingSrc(const KnownFPClass &Src, + DenormalMode Mode); void resetAll() { *this = KnownFPClass(); } }; diff --git a/llvm/include/llvm/Support/ProgramStack.h b/llvm/include/llvm/Support/ProgramStack.h index 55964c9779209..0dd8235b90c06 100644 --- a/llvm/include/llvm/Support/ProgramStack.h +++ b/llvm/include/llvm/Support/ProgramStack.h @@ -10,6 +10,7 @@ #define LLVM_SUPPORT_PROGRAMSTACK_H #include "llvm/ADT/STLFunctionalExtras.h" +#include "llvm/Support/Compiler.h" // LLVM_HAS_SPLIT_STACKS is exposed in the header because CrashRecoveryContext // needs to know if it's running on another thread or not. @@ -28,12 +29,12 @@ namespace llvm { /// /// The value is not guaranteed to point to anything specific. It can be used to /// estimate how much stack space has been used since the previous call. -uintptr_t getStackPointer(); +LLVM_ABI uintptr_t getStackPointer(); /// \returns the default stack size for this platform. /// /// Based on \p RLIMIT_STACK or the equivalent. -unsigned getDefaultStackSize(); +LLVM_ABI unsigned getDefaultStackSize(); /// Runs Fn on a new stack of at least the given size. /// @@ -42,7 +43,7 @@ unsigned getDefaultStackSize(); /// /// The preferred implementation is split stacks on platforms that have a good /// debugging experience for them. On other platforms a new thread is used. -void runOnNewStack(unsigned StackSize, function_ref Fn); +LLVM_ABI void runOnNewStack(unsigned StackSize, function_ref Fn); template std::enable_if_t, R> diff --git a/llvm/include/llvm/Support/TextEncoding.h b/llvm/include/llvm/Support/TextEncoding.h index e204b95dd2dd7..8a304910aa5dd 100644 --- a/llvm/include/llvm/Support/TextEncoding.h +++ b/llvm/include/llvm/Support/TextEncoding.h @@ -18,6 +18,7 @@ #include "llvm/ADT/SmallString.h" #include "llvm/ADT/StringRef.h" #include "llvm/Config/config.h" +#include "llvm/Support/Compiler.h" #include "llvm/Support/ErrorOr.h" #include @@ -92,8 +93,8 @@ class TextEncodingConverter { /// \param[in] From the source character encoding /// \param[in] To the target character encoding /// \return a TextEncodingConverter instance or an error code - static ErrorOr create(TextEncoding From, - TextEncoding To); + LLVM_ABI static ErrorOr create(TextEncoding From, + TextEncoding To); /// Creates a TextEncodingConverter instance. /// Returns std::errc::invalid_argument in case the requested conversion is @@ -101,7 +102,8 @@ class TextEncodingConverter { /// \param[in] From name of the source character encoding /// \param[in] To name of the target character encoding /// \return a TextEncodingConverter instance or an error code - static ErrorOr create(StringRef From, StringRef To); + LLVM_ABI static ErrorOr create(StringRef From, + StringRef To); TextEncodingConverter(const TextEncodingConverter &) = delete; TextEncodingConverter &operator=(const TextEncodingConverter &) = delete; diff --git a/llvm/include/llvm/Support/Timer.h b/llvm/include/llvm/Support/Timer.h index 36890c75a65e3..40709d49db011 100644 --- a/llvm/include/llvm/Support/Timer.h +++ b/llvm/include/llvm/Support/Timer.h @@ -258,7 +258,7 @@ class TimerGroup { private: friend class Timer; - friend void PrintStatisticsJSON(raw_ostream &OS); + LLVM_ABI friend void PrintStatisticsJSON(raw_ostream &OS); void addTimer(Timer &T); void removeTimer(Timer &T); void prepareToPrintList(bool reset_time = false);