Skip to content

[llvm] annotate remaining Support and ADT library interfaces for DLL export #145354

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Jun 24, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion llvm/include/llvm/ADT/APFloat.h
Original file line number Diff line number Diff line change
Expand Up @@ -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&);
Expand Down
2 changes: 1 addition & 1 deletion llvm/include/llvm/ADT/APInt.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion llvm/include/llvm/ADT/DynamicAPInt.h
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
6 changes: 3 additions & 3 deletions llvm/include/llvm/Support/ConvertUTF.h
Original file line number Diff line number Diff line change
Expand Up @@ -346,9 +346,9 @@ LLVM_ABI bool convertUTF32ToUTF8String(ArrayRef<UTF32> Src, std::string &Out);
LLVM_ABI bool convertUTF8ToUTF16String(StringRef SrcUTF8,
SmallVectorImpl<UTF16> &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 {
Expand Down
12 changes: 7 additions & 5 deletions llvm/include/llvm/Support/KnownFPClass.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
#define LLVM_SUPPORT_KNOWNFPCLASS_H

#include "llvm/ADT/FloatingPointMode.h"
#include "llvm/Support/Compiler.h"
#include <optional>

namespace llvm {
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -209,15 +210,16 @@ 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
/// introduced, but cannot assume a denormal will be flushed under FTZ/DAZ.
///
/// 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(); }
};
Expand Down
7 changes: 4 additions & 3 deletions llvm/include/llvm/Support/ProgramStack.h
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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.
///
Expand All @@ -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<void()> Fn);
LLVM_ABI void runOnNewStack(unsigned StackSize, function_ref<void()> Fn);

template <typename R, typename... Ts>
std::enable_if_t<!std::is_same_v<R, void>, R>
Expand Down
8 changes: 5 additions & 3 deletions llvm/include/llvm/Support/TextEncoding.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 <string>
Expand Down Expand Up @@ -92,16 +93,17 @@ 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<TextEncodingConverter> create(TextEncoding From,
TextEncoding To);
LLVM_ABI static ErrorOr<TextEncodingConverter> create(TextEncoding From,
TextEncoding To);

/// Creates a TextEncodingConverter instance.
/// Returns std::errc::invalid_argument in case the requested conversion is
/// not supported.
/// \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<TextEncodingConverter> create(StringRef From, StringRef To);
LLVM_ABI static ErrorOr<TextEncodingConverter> create(StringRef From,
StringRef To);

TextEncodingConverter(const TextEncodingConverter &) = delete;
TextEncodingConverter &operator=(const TextEncodingConverter &) = delete;
Expand Down
2 changes: 1 addition & 1 deletion llvm/include/llvm/Support/Timer.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
Loading