-
Notifications
You must be signed in to change notification settings - Fork 14.3k
[llvm] annotate interfaces in llvm/ProfileData for DLL export #142861
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
Conversation
d3ce321
to
febe92b
Compare
febe92b
to
4df6fce
Compare
@llvm/pr-subscribers-pgo Author: Andrew Rogers (andrurogerz) ChangesPurposeThis patch is one in a series of code-mods that annotate LLVM’s public interface for export. This patch annotates the BackgroundThis effort is tracked in #109483. Additional context is provided in this discourse, and documentation for The bulk of these changes were generated automatically using the Interface Definition Scanner (IDS) tool, followed formatting with The following manual adjustments were also applied after running IDS on Linux:
ValidationLocal builds and tests to validate cross-platform compatibility. This included llvm, clang, and lldb on the following configurations:
Patch is 102.56 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/142861.diff 28 Files Affected:
diff --git a/llvm/include/llvm/ProfileData/Coverage/CoverageMapping.h b/llvm/include/llvm/ProfileData/Coverage/CoverageMapping.h
index 4fc0133443192..e62ce5e3d8fa6 100644
--- a/llvm/include/llvm/ProfileData/Coverage/CoverageMapping.h
+++ b/llvm/include/llvm/ProfileData/Coverage/CoverageMapping.h
@@ -71,13 +71,13 @@ enum class coveragemap_error {
invalid_or_missing_arch_specifier
};
-const std::error_category &coveragemap_category();
+LLVM_ABI const std::error_category &coveragemap_category();
inline std::error_code make_error_code(coveragemap_error E) {
return std::error_code(static_cast<int>(E), coveragemap_category());
}
-class CoverageMapError : public ErrorInfo<CoverageMapError> {
+class LLVM_ABI CoverageMapError : public ErrorInfo<CoverageMapError> {
public:
CoverageMapError(coveragemap_error Err, const Twine &ErrStr = Twine())
: Err(Err), Msg(ErrStr.str()) {
@@ -210,11 +210,11 @@ class CounterExpressionBuilder {
ArrayRef<CounterExpression> getExpressions() const { return Expressions; }
/// Return a counter that represents the expression that adds LHS and RHS.
- Counter add(Counter LHS, Counter RHS, bool Simplify = true);
+ LLVM_ABI Counter add(Counter LHS, Counter RHS, bool Simplify = true);
/// Return a counter that represents the expression that subtracts RHS from
/// LHS.
- Counter subtract(Counter LHS, Counter RHS, bool Simplify = true);
+ LLVM_ABI Counter subtract(Counter LHS, Counter RHS, bool Simplify = true);
/// K to V map. K will be Counter in most cases. V may be Counter or
/// Expression.
@@ -222,7 +222,7 @@ class CounterExpressionBuilder {
/// \return A counter equivalent to \C, with each term in its
/// expression replaced with term from \p Map.
- Counter subst(Counter C, const SubstMap &Map);
+ LLVM_ABI Counter subst(Counter C, const SubstMap &Map);
};
using LineColPair = std::pair<unsigned, unsigned>;
@@ -473,7 +473,7 @@ struct MCDCRecord {
// Compare executed test vectors against each other to find an independence
// pairs for each condition. This processing takes the most time.
- void findIndependencePairs();
+ LLVM_ABI void findIndependencePairs();
const CounterMappingRegion &getDecisionRegion() const { return Region; }
unsigned getNumConditions() const {
@@ -665,7 +665,8 @@ class TVIdxBuilder {
/// \param NextIDs The list of {FalseID, TrueID} indexed by ID
/// The first element [0] should be the root node.
/// \param Offset Offset of index to final decisions.
- TVIdxBuilder(const SmallVectorImpl<ConditionIDs> &NextIDs, int Offset = 0);
+ LLVM_ABI TVIdxBuilder(const SmallVectorImpl<ConditionIDs> &NextIDs,
+ int Offset = 0);
};
} // namespace mcdc
@@ -684,21 +685,21 @@ class CounterMappingContext {
void setCounts(ArrayRef<uint64_t> Counts) { CounterValues = Counts; }
void setBitmap(BitVector &&Bitmap_) { Bitmap = std::move(Bitmap_); }
- void dump(const Counter &C, raw_ostream &OS) const;
+ LLVM_ABI void dump(const Counter &C, raw_ostream &OS) const;
void dump(const Counter &C) const { dump(C, dbgs()); }
/// Return the number of times that a region of code associated with this
/// counter was executed.
- Expected<int64_t> evaluate(const Counter &C) const;
+ LLVM_ABI Expected<int64_t> evaluate(const Counter &C) const;
/// Return an MCDC record that indicates executed test vectors and condition
/// pairs.
- Expected<MCDCRecord>
+ LLVM_ABI Expected<MCDCRecord>
evaluateMCDCRegion(const CounterMappingRegion &Region,
ArrayRef<const CounterMappingRegion *> Branches,
bool IsVersion11);
- unsigned getMaxCounterID(const Counter &C) const;
+ LLVM_ABI unsigned getMaxCounterID(const Counter &C) const;
};
/// Code coverage information for a single function.
@@ -761,7 +762,7 @@ class FunctionRecordIterator
StringRef Filename;
/// Skip records whose primary file is not \c Filename.
- void skipOtherFiles();
+ LLVM_ABI void skipOtherFiles();
public:
FunctionRecordIterator(ArrayRef<FunctionRecord> Records_,
@@ -1007,7 +1008,7 @@ class CoverageMapping {
/// defined in the specified file. This is guaranteed to return a superset of
/// such records: extra records not in the file may be included if there is
/// a hash collision on the filename. Clients must be robust to collisions.
- ArrayRef<unsigned>
+ LLVM_ABI ArrayRef<unsigned>
getImpreciseRecordIndicesForFilename(StringRef Filename) const;
public:
@@ -1015,14 +1016,14 @@ class CoverageMapping {
CoverageMapping &operator=(const CoverageMapping &) = delete;
/// Load the coverage mapping using the given readers.
- static Expected<std::unique_ptr<CoverageMapping>>
+ LLVM_ABI static Expected<std::unique_ptr<CoverageMapping>>
load(ArrayRef<std::unique_ptr<CoverageMappingReader>> CoverageReaders,
IndexedInstrProfReader &ProfileReader);
/// Load the coverage mapping from the given object files and profile. If
/// \p Arches is non-empty, it must specify an architecture for each object.
/// Ignores non-instrumented object files unless all are not instrumented.
- static Expected<std::unique_ptr<CoverageMapping>>
+ LLVM_ABI static Expected<std::unique_ptr<CoverageMapping>>
load(ArrayRef<StringRef> ObjectFilenames, StringRef ProfileFilename,
vfs::FileSystem &FS, ArrayRef<StringRef> Arches = {},
StringRef CompilationDir = "",
@@ -1045,20 +1046,22 @@ class CoverageMapping {
/// Returns a lexicographically sorted, unique list of files that are
/// covered.
- std::vector<StringRef> getUniqueSourceFiles() const;
+ LLVM_ABI std::vector<StringRef> getUniqueSourceFiles() const;
/// Get the coverage for a particular file.
///
/// The given filename must be the name as recorded in the coverage
/// information. That is, only names returned from getUniqueSourceFiles will
/// yield a result.
- CoverageData getCoverageForFile(StringRef Filename) const;
+ LLVM_ABI CoverageData getCoverageForFile(StringRef Filename) const;
/// Get the coverage for a particular function.
- CoverageData getCoverageForFunction(const FunctionRecord &Function) const;
+ LLVM_ABI CoverageData
+ getCoverageForFunction(const FunctionRecord &Function) const;
/// Get the coverage for an expansion within a coverage set.
- CoverageData getCoverageForExpansion(const ExpansionRecord &Expansion) const;
+ LLVM_ABI CoverageData
+ getCoverageForExpansion(const ExpansionRecord &Expansion) const;
/// Gets all of the functions covered by this profile.
iterator_range<FunctionRecordIterator> getCoveredFunctions() const {
@@ -1079,7 +1082,7 @@ class CoverageMapping {
///
/// Every instantiation group in a program is attributed to exactly one file:
/// the file in which the definition for the common function begins.
- std::vector<InstantiationGroup>
+ LLVM_ABI std::vector<InstantiationGroup>
getInstantiationGroups(StringRef Filename) const;
};
@@ -1096,8 +1099,9 @@ class LineCoverageStats {
LineCoverageStats() = default;
public:
- LineCoverageStats(ArrayRef<const CoverageSegment *> LineSegments,
- const CoverageSegment *WrappedSegment, unsigned Line);
+ LLVM_ABI LineCoverageStats(ArrayRef<const CoverageSegment *> LineSegments,
+ const CoverageSegment *WrappedSegment,
+ unsigned Line);
uint64_t getExecutionCount() const { return ExecutionCount; }
@@ -1136,7 +1140,7 @@ class LineCoverageIterator
const LineCoverageStats &operator*() const { return Stats; }
- LineCoverageIterator &operator++();
+ LLVM_ABI LineCoverageIterator &operator++();
LineCoverageIterator getEnd() const {
auto EndIt = *this;
diff --git a/llvm/include/llvm/ProfileData/Coverage/CoverageMappingReader.h b/llvm/include/llvm/ProfileData/Coverage/CoverageMappingReader.h
index 886b4d3d6894d..e91ba9147a745 100644
--- a/llvm/include/llvm/ProfileData/Coverage/CoverageMappingReader.h
+++ b/llvm/include/llvm/ProfileData/Coverage/CoverageMappingReader.h
@@ -18,6 +18,7 @@
#include "llvm/ADT/StringRef.h"
#include "llvm/ProfileData/Coverage/CoverageMapping.h"
#include "llvm/ProfileData/InstrProf.h"
+#include "llvm/Support/Compiler.h"
#include "llvm/Support/Error.h"
#include "llvm/Support/MemoryBuffer.h"
#include <cstddef>
@@ -46,7 +47,7 @@ class CoverageMappingIterator {
CoverageMappingRecord Record;
coveragemap_error ReadErr;
- void increment();
+ LLVM_ABI void increment();
public:
using iterator_category = std::input_iterator_tag;
@@ -112,10 +113,10 @@ class RawCoverageReader {
RawCoverageReader(StringRef Data) : Data(Data) {}
- Error readULEB128(uint64_t &Result);
- Error readIntMax(uint64_t &Result, uint64_t MaxPlus1);
- Error readSize(uint64_t &Result);
- Error readString(StringRef &Result);
+ LLVM_ABI Error readULEB128(uint64_t &Result);
+ LLVM_ABI Error readIntMax(uint64_t &Result, uint64_t MaxPlus1);
+ LLVM_ABI Error readSize(uint64_t &Result);
+ LLVM_ABI Error readString(StringRef &Result);
};
/// Checks if the given coverage mapping data is exported for
@@ -125,7 +126,7 @@ class RawCoverageMappingDummyChecker : public RawCoverageReader {
RawCoverageMappingDummyChecker(StringRef MappingData)
: RawCoverageReader(MappingData) {}
- Expected<bool> isDummy();
+ LLVM_ABI Expected<bool> isDummy();
};
/// Reader for the raw coverage mapping data.
@@ -149,7 +150,7 @@ class RawCoverageMappingReader : public RawCoverageReader {
RawCoverageMappingReader &
operator=(const RawCoverageMappingReader &) = delete;
- Error read();
+ LLVM_ABI Error read();
private:
Error decodeCounter(unsigned Value, Counter &C);
@@ -161,7 +162,7 @@ class RawCoverageMappingReader : public RawCoverageReader {
/// Reader for the coverage mapping data that is emitted by the
/// frontend and stored in an object file.
-class BinaryCoverageReader : public CoverageMappingReader {
+class LLVM_ABI BinaryCoverageReader : public CoverageMappingReader {
public:
struct ProfileMappingRecord {
CovMapVersion Version;
@@ -245,7 +246,7 @@ class RawCoverageFilenamesReader : public RawCoverageReader {
RawCoverageFilenamesReader &
operator=(const RawCoverageFilenamesReader &) = delete;
- Error read(CovMapVersion Version);
+ LLVM_ABI Error read(CovMapVersion Version);
};
} // end namespace coverage
diff --git a/llvm/include/llvm/ProfileData/Coverage/CoverageMappingWriter.h b/llvm/include/llvm/ProfileData/Coverage/CoverageMappingWriter.h
index 02848deaba9db..5341b9879a9fe 100644
--- a/llvm/include/llvm/ProfileData/Coverage/CoverageMappingWriter.h
+++ b/llvm/include/llvm/ProfileData/Coverage/CoverageMappingWriter.h
@@ -17,6 +17,7 @@
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ProfileData/Coverage/CoverageMapping.h"
+#include "llvm/Support/Compiler.h"
namespace llvm {
@@ -30,11 +31,11 @@ class CoverageFilenamesSectionWriter {
ArrayRef<std::string> Filenames;
public:
- CoverageFilenamesSectionWriter(ArrayRef<std::string> Filenames);
+ LLVM_ABI CoverageFilenamesSectionWriter(ArrayRef<std::string> Filenames);
/// Write encoded filenames to the given output stream. If \p Compress is
/// true, attempt to compress the filenames.
- void write(raw_ostream &OS, bool Compress = true);
+ LLVM_ABI void write(raw_ostream &OS, bool Compress = true);
};
/// Writer for instrumentation based coverage mapping data.
@@ -51,7 +52,7 @@ class CoverageMappingWriter {
MappingRegions(MappingRegions) {}
/// Write encoded coverage mapping data to the given output stream.
- void write(raw_ostream &OS);
+ LLVM_ABI void write(raw_ostream &OS);
};
/// Writer for the coverage mapping testing format.
@@ -70,7 +71,7 @@ class TestingFormatWriter {
CoverageRecordsData(CoverageRecordsData) {}
/// Encode to the given output stream.
- void
+ LLVM_ABI void
write(raw_ostream &OS,
TestingFormatVersion Version = TestingFormatVersion::CurrentVersion);
};
diff --git a/llvm/include/llvm/ProfileData/DataAccessProf.h b/llvm/include/llvm/ProfileData/DataAccessProf.h
index c0f0c6d9c9fc1..f410096d83f5e 100644
--- a/llvm/include/llvm/ProfileData/DataAccessProf.h
+++ b/llvm/include/llvm/ProfileData/DataAccessProf.h
@@ -24,6 +24,7 @@
#include "llvm/ADT/StringRef.h"
#include "llvm/ProfileData/InstrProf.h"
#include "llvm/Support/Allocator.h"
+#include "llvm/Support/Compiler.h"
#include "llvm/Support/Error.h"
#include "llvm/Support/StringSaver.h"
@@ -138,33 +139,35 @@ class DataAccessProfData {
/// - Serialized strings.
/// - The encoded hashes.
/// - Records.
- Error serialize(ProfOStream &OS) const;
+ LLVM_ABI Error serialize(ProfOStream &OS) const;
/// Deserialize this class from the given buffer.
- Error deserialize(const unsigned char *&Ptr);
+ LLVM_ABI Error deserialize(const unsigned char *&Ptr);
/// Returns a profile record for \p SymbolID, or std::nullopt if there
/// isn't a record. Internally, this function will canonicalize the symbol
/// name before the lookup.
- std::optional<DataAccessProfRecord>
+ LLVM_ABI std::optional<DataAccessProfRecord>
getProfileRecord(const SymbolHandleRef SymID) const;
/// Returns true if \p SymID is seen in profiled binaries and cold.
- bool isKnownColdSymbol(const SymbolHandleRef SymID) const;
+ LLVM_ABI bool isKnownColdSymbol(const SymbolHandleRef SymID) const;
/// Methods to set symbolized data access profile. Returns error if
/// duplicated symbol names or content hashes are seen. The user of this
/// class should aggregate counters that correspond to the same symbol name
/// or with the same string literal hash before calling 'set*' methods.
- Error setDataAccessProfile(SymbolHandleRef SymbolID, uint64_t AccessCount);
+ LLVM_ABI Error setDataAccessProfile(SymbolHandleRef SymbolID,
+ uint64_t AccessCount);
/// Similar to the method above, for records with \p Locations representing
/// the `filename:line` where this symbol shows up. Note because of linker's
/// merge of identical symbols (e.g., unnamed_addr string literals), one
/// symbol is likely to have multiple locations.
- Error setDataAccessProfile(SymbolHandleRef SymbolID, uint64_t AccessCount,
- ArrayRef<SourceLocation> Locations);
+ LLVM_ABI Error setDataAccessProfile(SymbolHandleRef SymbolID,
+ uint64_t AccessCount,
+ ArrayRef<SourceLocation> Locations);
/// Add a symbol that's seen in the profiled binary without samples.
- Error addKnownSymbolWithoutSamples(SymbolHandleRef SymbolID);
+ LLVM_ABI Error addKnownSymbolWithoutSamples(SymbolHandleRef SymbolID);
/// The following methods return array reference for various internal data
/// structures.
diff --git a/llvm/include/llvm/ProfileData/GCOV.h b/llvm/include/llvm/ProfileData/GCOV.h
index c8af71dbf61ef..0dc33d062e4f8 100644
--- a/llvm/include/llvm/ProfileData/GCOV.h
+++ b/llvm/include/llvm/ProfileData/GCOV.h
@@ -21,6 +21,7 @@
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/iterator.h"
#include "llvm/ADT/iterator_range.h"
+#include "llvm/Support/Compiler.h"
#include "llvm/Support/DataExtractor.h"
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/raw_ostream.h"
@@ -192,11 +193,11 @@ class GCOVFile {
public:
GCOVFile() = default;
- bool readGCNO(GCOVBuffer &Buffer);
- bool readGCDA(GCOVBuffer &Buffer);
+ LLVM_ABI bool readGCNO(GCOVBuffer &Buffer);
+ LLVM_ABI bool readGCDA(GCOVBuffer &Buffer);
GCOV::GCOVVersion getVersion() const { return version; }
- void print(raw_ostream &OS) const;
- void dump() const;
+ LLVM_ABI void print(raw_ostream &OS) const;
+ LLVM_ABI void dump() const;
std::vector<std::string> filenames;
StringMap<unsigned> filenameToIdx;
@@ -223,7 +224,7 @@ class GCOVFile {
struct GCOVArc {
GCOVArc(GCOVBlock &src, GCOVBlock &dst, uint32_t flags)
: src(src), dst(dst), flags(flags) {}
- bool onTree() const;
+ LLVM_ABI bool onTree() const;
GCOVBlock &src;
GCOVBlock &dst;
@@ -240,18 +241,18 @@ class GCOVFunction {
GCOVFunction(GCOVFile &file) : file(file) {}
- StringRef getName(bool demangle) const;
- StringRef getFilename() const;
- uint64_t getEntryCount() const;
- GCOVBlock &getExitBlock() const;
+ LLVM_ABI StringRef getName(bool demangle) const;
+ LLVM_ABI StringRef getFilename() const;
+ LLVM_ABI uint64_t getEntryCount() const;
+ LLVM_ABI GCOVBlock &getExitBlock() const;
iterator_range<BlockIterator> blocksRange() const {
return make_range(blocks.begin(), blocks.end());
}
- void propagateCounts(const GCOVBlock &v, GCOVArc *pred);
- void print(raw_ostream &OS) const;
- void dump() const;
+ LLVM_ABI void propagateCounts(const GCOVBlock &v, GCOVArc *pred);
+ LLVM_ABI void print(raw_ostream &OS) const;
+ LLVM_ABI void dump() const;
GCOVFile &file;
uint32_t ident = 0;
@@ -296,14 +297,14 @@ class GCOVBlock {
return make_range(succ.begin(), succ.end());
}
- void print(raw_ostream &OS) const;
- void dump() const;
+ LLVM_ABI void print(raw_ostream &OS) const;
+ LLVM_ABI void dump() const;
- static uint64_t
+ LLVM_ABI static uint64_t
augmentOneCycle(GCOVBlock *src,
std::vector<std::pair<GCOVBlock *, size_t>> &stack);
- static uint64_t getCyclesCount(const BlockVector &blocks);
- static uint64_t getLineCount(const BlockVector &Blocks);
+ LLVM_ABI static uint64_t getCyclesCount(const BlockVector &blocks);
+ LLVM_ABI static uint64_t getLineCount(const BlockVector &Blocks);
public:
uint32_t number;
@@ -315,8 +316,8 @@ class GCOVBlock {
GCOVArc *incoming = nullptr;
};
-void gcovOneInput(const GCOV::Options &options, StringRef filename,
- StringRef gcno, StringRef gcda, GCOVFile &file);
+LLVM_ABI void gcovOneInput(const GCOV::Options &options, StringRef filename,
+ StringRef gcno, StringRef gcda, GCOVFile &file);
} // end namespace llvm
diff --git a/llvm/include/llvm/ProfileData/IndexedMemProfData.h b/llvm/include/llvm/ProfileData/IndexedMemProfData.h
index 9af8755281be4..dae0928d50ca7 100644
--- a/llvm/include/llvm/ProfileData/IndexedMemProfData.h
+++ b/llvm/include/llvm/ProfileData/IndexedMemProfData.h
@@ -18,6 +18,7 @@
#include "llvm/ProfileData/DataAccessProf.h"
#include "llvm/ProfileData/InstrProf.h"
#include "llvm/ProfileData/MemProf.h"
+#include "llvm/Support/Compiler.h"
#include <functional>
#include <optional>
@@ -87,7 +88,7 @@ struct IndexedMemProfData {
} // namespace memprof
// Write the MemProf data to OS.
-Error writeMemProf(
+LLVM_ABI Error writeMemProf(
ProfOStream &OS, memprof::IndexedMemProfData &MemProfData,
memprof::IndexedVersion MemProfVersionRequested, bool MemProfFullSchema,
std::unique_ptr<memprof::DataAccessProfData> DataAccessProfileData,
diff --git a/llvm/include/llvm/ProfileData/InstrProf.h b/llvm/include/llvm/ProfileData/InstrProf.h
index 544a59df43ed3..f53602424b583 100644
--- a/llvm/include/llvm/ProfileData/InstrProf.h
+++ b/llvm/include/llvm/ProfileData/InstrProf.h
@@ -69,18 +69,18 @@ struct PatchItem {
// back patching.
class ProfOStream {
public:
- ProfOStream(raw_fd_ostream &FD);
- ProfOStream(raw_string_ostream &STR);
+ LLVM_ABI ProfOStream(raw_fd_ostream &FD);
+ LLVM_ABI ProfOStream(raw_string_ostream &STR);
- [[nodiscard]] uint64_t tell() const;
- void write(uint64_t V);
- void write32(uint32_t V);
- void writeByte(uint8_t V);
+ [[nodiscard]] LLVM_ABI uint64_t tell() const;
+ LLVM_ABI void write(uint64_t V);
+ LLVM_ABI void write32(uint32_t V);
+ LLVM_ABI void writeByte(uint8_t V);
// \c patch can only be called when all data is written and flushed.
// For raw_string_ostream, the patch is done on the target string
// directly and it won't be reflected in the stream's internal buffer.
- void patch(ArrayRef<PatchItem> P);
+ LLVM_ABI void patch(ArrayRef<PatchItem> P);
// If \c OS is an instance of \c raw_fd_ostream, this field will be
// true. Otherwise, \c OS will be an raw_string_ostream.
@@ -104,9 +104,9 @@ inline uint64_t getInstrMaxCountValue() {
/// The name of the section depends on the object format type \p OF. If
/// \p AddSegmentInfo is true, a segment prefix and additional...
[truncated]
|
@compnerd @vgvassilev please have a look when you have a chance, thanks! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
This PR is causing some test failures in various Buildbot runs. Fix is clear, and I will have a PR up soon; I don't think this needs to be reverted.
|
LLVM Buildbot has detected a new failure on builder Full details are available at: https://lab.llvm.org/buildbot/#/builders/153/builds/34369 Here is the relevant piece of the build log for the reference
|
#143574 should address the test failures introduced by this change |
…nc (#143574) ## Purpose The compiler-rt project `check-same-common-code.test` test case started failing after #142861 was merged. This change addresses the failure. ## Overview This patch replicates the changes made by #142861 to llvm/include/llvm/ProfileData/InstrProfData.inc in the duplicated file compiler-rt/include/profile/InstrProfData.inc. These files otherwise match. ## Validation Locally built `check-profile` target and verified `check-same-common-code.test` now passes.
…42861) ## Purpose This patch is one in a series of code-mods that annotate LLVM’s public interface for export. This patch annotates the `llvm/ProfileData` library. These annotations currently have no meaningful impact on the LLVM build; however, they are a prerequisite to support an LLVM Windows DLL (shared library) build. ## Background This effort is tracked in llvm#109483. Additional context is provided in [this discourse](https://discourse.llvm.org/t/psa-annotating-llvm-public-interface/85307), and documentation for `LLVM_ABI` and related annotations is found in the LLVM repo [here](https://github.com/llvm/llvm-project/blob/main/llvm/docs/InterfaceExportAnnotations.rst). The bulk of these changes were generated automatically using the [Interface Definition Scanner (IDS)](https://github.com/compnerd/ids) tool, followed formatting with `git clang-format`. The following manual adjustments were also applied after running IDS on Linux: - Manually annotate the file `llvm/include/llvm/ProfileData/InstrProfData.inc` because it is skipped by IDS - Add `LLVM_TEMPLATE_ABI` and `LLVM_EXPORT_TEMPLATE` to exported instantiated templates. - Add `LLVM_ABI_FRIEND` to friend member functions declared with `LLVM_ABI` - Add `LLVM_ABI` to a small number of symbols that require export but are not declared in headers ## Validation Local builds and tests to validate cross-platform compatibility. This included llvm, clang, and lldb on the following configurations: - Windows with MSVC - Windows with Clang - Linux with GCC - Linux with Clang - Darwin with Clang
…nc (llvm#143574) ## Purpose The compiler-rt project `check-same-common-code.test` test case started failing after llvm#142861 was merged. This change addresses the failure. ## Overview This patch replicates the changes made by llvm#142861 to llvm/include/llvm/ProfileData/InstrProfData.inc in the duplicated file compiler-rt/include/profile/InstrProfData.inc. These files otherwise match. ## Validation Locally built `check-profile` target and verified `check-same-common-code.test` now passes.
…42861) ## Purpose This patch is one in a series of code-mods that annotate LLVM’s public interface for export. This patch annotates the `llvm/ProfileData` library. These annotations currently have no meaningful impact on the LLVM build; however, they are a prerequisite to support an LLVM Windows DLL (shared library) build. ## Background This effort is tracked in llvm#109483. Additional context is provided in [this discourse](https://discourse.llvm.org/t/psa-annotating-llvm-public-interface/85307), and documentation for `LLVM_ABI` and related annotations is found in the LLVM repo [here](https://github.com/llvm/llvm-project/blob/main/llvm/docs/InterfaceExportAnnotations.rst). The bulk of these changes were generated automatically using the [Interface Definition Scanner (IDS)](https://github.com/compnerd/ids) tool, followed formatting with `git clang-format`. The following manual adjustments were also applied after running IDS on Linux: - Manually annotate the file `llvm/include/llvm/ProfileData/InstrProfData.inc` because it is skipped by IDS - Add `LLVM_TEMPLATE_ABI` and `LLVM_EXPORT_TEMPLATE` to exported instantiated templates. - Add `LLVM_ABI_FRIEND` to friend member functions declared with `LLVM_ABI` - Add `LLVM_ABI` to a small number of symbols that require export but are not declared in headers ## Validation Local builds and tests to validate cross-platform compatibility. This included llvm, clang, and lldb on the following configurations: - Windows with MSVC - Windows with Clang - Linux with GCC - Linux with Clang - Darwin with Clang
…nc (llvm#143574) ## Purpose The compiler-rt project `check-same-common-code.test` test case started failing after llvm#142861 was merged. This change addresses the failure. ## Overview This patch replicates the changes made by llvm#142861 to llvm/include/llvm/ProfileData/InstrProfData.inc in the duplicated file compiler-rt/include/profile/InstrProfData.inc. These files otherwise match. ## Validation Locally built `check-profile` target and verified `check-same-common-code.test` now passes.
Purpose
This patch is one in a series of code-mods that annotate LLVM’s public interface for export. This patch annotates the
llvm/ProfileData
library. These annotations currently have no meaningful impact on the LLVM build; however, they are a prerequisite to support an LLVM Windows DLL (shared library) build.Background
This effort is tracked in #109483. Additional context is provided in this discourse, and documentation for
LLVM_ABI
and related annotations is found in the LLVM repo here.The bulk of these changes were generated automatically using the Interface Definition Scanner (IDS) tool, followed formatting with
git clang-format
.The following manual adjustments were also applied after running IDS on Linux:
llvm/include/llvm/ProfileData/InstrProfData.inc
because it is skipped by IDSLLVM_TEMPLATE_ABI
andLLVM_EXPORT_TEMPLATE
to exported instantiated templates.LLVM_ABI_FRIEND
to friend member functions declared withLLVM_ABI
LLVM_ABI
to a small number of symbols that require export but are not declared in headersValidation
Local builds and tests to validate cross-platform compatibility. This included llvm, clang, and lldb on the following configurations: