/llvm-project/clang/utils/TableGen/ |
H A D | TableGenBackends.h | 38 void EmitClangBasicReader(const llvm::RecordKeeper &Records, 40 void EmitClangBasicWriter(const llvm::RecordKeeper &Records, 42 void EmitClangTypeNodes(const llvm::RecordKeeper &Records, 44 void EmitClangTypeReader(const llvm::RecordKeeper &Records, 46 void EmitClangTypeWriter(const llvm::RecordKeeper &Records, 48 void EmitClangAttrParserStringSwitches(const llvm::RecordKeeper &Records, 51 const llvm::RecordKeeper &Records, llvm::raw_ostream &OS); 52 void EmitCXX11AttributeInfo(const llvm::RecordKeeper &Records, 54 void EmitClangAttrClass(const llvm::RecordKeeper &Records, 56 void EmitClangAttrImpl(const llvm::RecordKeeper &Records, [all...] |
H A D | TableGen.cpp | 120 clEnumValN(PrintRecords, "print-records", 121 "Print all records to stdout (default)"), 123 "Dump all records as machine-readable JSON"), 325 bool ClangTableGenMain(raw_ostream &OS, const RecordKeeper &Records) { in ClangTableGenMain() 328 OS << Records; // No argument, dump all contents in ClangTableGenMain() 331 EmitJSON(Records, OS); in ClangTableGenMain() 334 EmitClangAttrClass(Records, OS); in ClangTableGenMain() 337 EmitClangAttrParserStringSwitches(Records, OS); in ClangTableGenMain() 340 EmitClangAttrSubjectMatchRulesParserStringSwitches(Records, OS); in ClangTableGenMain() 343 EmitCXX11AttributeInfo(Records, O in ClangTableGenMain() 315 ClangTableGenMain(raw_ostream & OS,RecordKeeper & Records) ClangTableGenMain() argument [all...] |
/llvm-project/clang/test/SemaCXX/ |
H A D | warn-range-loop-analysis-trivially-copyable.cpp | 9 Record records[8]; in test_POD_64_bytes() local 10 for (const auto r : records) in test_POD_64_bytes() 21 Record records[8]; in test_POD_65_bytes() local 22 for (const auto r : records) in test_POD_65_bytes() 32 Record records[8]; in test_TriviallyCopyable_64_bytes() local 33 for (const auto r : records) in test_TriviallyCopyable_64_bytes() 43 Record records[8]; in test_TriviallyCopyConstructible_64_bytes() local 44 for (const auto r : records) in test_TriviallyCopyConstructible_64_bytes() 56 Record records[8]; in test_TriviallyCopyable_65_bytes() local 57 for (const auto r : records) in test_TriviallyCopyable_65_bytes() [all …]
|
/llvm-project/llvm/include/llvm/DebugInfo/CodeView/ |
H A D | TypeStreamMerger.h | 32 /// Merge one set of type records into another. This method assumes 33 /// that all records are type records, and there are no Id records present. 35 /// \param Dest The table to store the re-written type records into. 49 /// Merge one set of id records into another. This method assumes 50 /// that all records are id records, and there are no Type records present. 51 /// However, since Id records can refer back to Type records, this method 52 /// assumes that the referenced type records have also been merged into 57 /// \param Dest The table to store the re-written id records into. 59 /// \param Types The mapping to use for the type records that these id 60 /// records refer to. [all …]
|
H A D | TypeHashing.h | 31 /// records within a single sequence of types, because if two records both have 43 static std::vector<LocallyHashedType> hashTypes(Range &&Records) { in hashTypes() 45 Hashes.reserve(std::distance(std::begin(Records), std::end(Records))); in hashTypes() 46 for (const auto &R : Records) in hashTypes() 77 /// is considered "as good as" the original type. Since type records can be 104 /// of referenced records, this function requires a list of types and ids 112 /// of referenced records, this function requires a list of types and ids 120 /// Given a sequence of combined type and ID records, compute global hashes 123 static std::vector<GloballyHashedType> hashTypes(Range &&Records) { in hashTypes() 126 for (const auto &R : Records) { in hashTypes() [all …]
|
/llvm-project/llvm/lib/XRay/ |
H A D | BlockIndexer.cpp | 10 // thread and a range of records representing a block. 21 CurrentBlock.Records.push_back(&R); in visit() 27 CurrentBlock.Records.push_back(&R); in visit() 32 CurrentBlock.Records.push_back(&R); in visit() 37 CurrentBlock.Records.push_back(&R); in visit() 42 CurrentBlock.Records.push_back(&R); in visit() 47 CurrentBlock.Records.push_back(&R); in visit() 52 CurrentBlock.Records.push_back(&R); in visit() 58 CurrentBlock.Records.push_back(&R); in visit() 63 if (!CurrentBlock.Records in visit() [all...] |
H A D | Trace.cpp | 36 std::vector<XRayRecord> &Records) { in loadNaiveFormatLog() argument 55 Records.reserve(NumReservations); in loadNaiveFormatLog() 81 case 0: { // Normal records. in loadNaiveFormatLog() 82 Records.emplace_back(); in loadNaiveFormatLog() 83 auto &Record = Records.back(); in loadNaiveFormatLog() 152 auto &Record = Records.back(); in loadNaiveFormatLog() 207 // Advance the offset pointer enough bytes to align to 32-byte records for in loadNaiveFormatLog() 217 /// of interspersed 16 byte Metadata Records and 8 byte Function Records. 269 XRayFileHeader &FileHeader, std::vector<XRayRecord> &Records) { in loadFDRLog() argument 282 // First we load the records into memory. in loadFDRLog() [all …]
|
/llvm-project/llvm/docs/ |
H A D | RemoveDIsDebugInfo.md | 1 # Debug info migration: From intrinsics to records 13 with `dbg.value` intrinsics representing debug info records, it would instead be printed as: 23 The debug records are not instructions, do not appear in the instruction list, and won't appear in your optimisation passes unless you go digging for them deliberately. 39 The second matter is that if you transfer sequences of instructions from one place to another manually, i.e. repeatedly using `moveBefore` where you might have used `splice`, then you should instead use the method `moveBeforePreserving`. `moveBeforePreserving` will transfer debug info records with the instruction they're attached to. This is something that happens automatically today -- if you use `moveBefore` on every element of an instruction sequence, then debug intrinsics will be moved in the normal course of your code, but we lose this behaviour with non-instruction debug info. 41 For a more in-depth overview of how to update existing code to support debug records, see [the guide below](#how-to-update-existing-code). 45 As we change from using debug intrinsics to debug records, any tools that depend on parsing IR produced by LLVM will need to handle the new format. For the most part, the difference between the printed form of a debug intrinsic call and a debug record is trivial: 63 Any tests downstream of the main LLVM repo that test the IR output of LLVM may break as a result of the change to using records. Updating an individual test to expect records instead of intrinsics should be trivial, given the update rules above. Updating many tests may be burdensome however; to update the lit tests in the main repository, the following steps were used: 178 `LLVMPositionBuilderBeforeDbgRecords` and `LLVMPositionBuilderBeforeInstrAndDbgRecords` behave the same as `LLVMPositionBuilder` and `LLVMPositionBuilderBefore` except the insertion position is set before the debug records that precede the target instruction. Note that this doesn't mean that debug intrinsics before the chosen instruction are skipped, only debug records (whic [all...] |
H A D | AssignmentTracking.md | 31 converts conventional debug records to assignment tracking metadata and sets 82 `#dbg_assign` records use a `DIAssignID` metadata node instance as an 123 This gives us a safe fall-back in cases where `#dbg_assign` records have 149 becomes linked to all the `#dbg_assign` records that the merged stores 154 records and `DIAssignID` attachments as if the stores represent source 160 records similarly to `#dbg_declare` records. Clone the 161 `#dbg_assign` records linked to the store, update the FragmentInfo in 162 the `ValueExpression`, and give the split stores (and cloned records) new 168 **Promoting** allocas and store/loads: `#dbg_assign` records implicitl [all...] |
/llvm-project/llvm/lib/DebugInfo/CodeView/ |
H A D | LazyRandomTypeCollection.cpp | 39 Records.resize(RecordCountHint); in LazyRandomTypeCollection() 64 Records.clear(); in reset() 65 Records.resize(RecordCountHint); in reset() 83 return Records[Index.toArrayIndex()].Offset; in getOffsetOfType() 93 return Records[Index.toArrayIndex()].Type; in getType() 106 return Records[Index.toArrayIndex()].Type; in tryGetType() 124 if (Records[I].Name.data() == nullptr) { in getTypeName() 126 Records[I].Name = Result; in getTypeName() 128 return Records[I].Name; in getTypeName() 135 if (Records in contains() [all...] |
H A D | TypeTableCollection.cpp | 18 TypeTableCollection::TypeTableCollection(ArrayRef<ArrayRef<uint8_t>> Records) 19 : NameStorage(Allocator), Records(Records) { in TypeTableCollection() argument 20 Names.resize(Records.size()); in TypeTableCollection() 38 assert(Index.toArrayIndex() < Records.size()); in getType() 39 return CVType(Records[Index.toArrayIndex()]); in getType() 58 uint32_t TypeTableCollection::size() { return Records.size(); } 60 uint32_t TypeTableCollection::capacity() { return Records.size(); }
|
/llvm-project/llvm/lib/DebugInfo/PDB/Native/ |
H A D | GSIStreamBuilder.cpp | 41 // Sum of the size of all public or global records. 61 // Assign public and global symbol records into hash table buckets. 62 // Modifies the list of records to store the bucket index, but does not 68 // DenseMapInfo implementation for deduplicating symbol records. 177 // structure for this purpose, even though these are global records, not in finalizeGlobalBuckets() 178 // public records. Most of the same fields are required: in finalizeGlobalBuckets() 184 std::vector<BulkPublic> Records; in finalizeGlobalBuckets() local 185 Records.resize(Globals.size()); in finalizeGlobalBuckets() 189 Records[I].Name = Name.data(); in finalizeGlobalBuckets() 190 Records[I].NameLen = Name.size(); in finalizeGlobalBuckets() [all …]
|
/llvm-project/llvm/utils/TableGen/ |
H A D | TableGen.cpp |
|
/llvm-project/llvm/lib/TableGen/ |
H A D | Main.cpp | 101 RecordKeeper Records; in TableGenMain() 102 TGTimer &Timer = Records.getTimer(); in TableGenMain() 109 Timer.startTimer("Parse, build records"); in TableGenMain() 116 Records.saveInputFilename(InputFilename); in TableGenMain() 125 TGParser Parser(SrcMgr, MacroNames, Records, NoWarnOnUnusedTemplateArgs); in TableGenMain() 143 if (TableGen::Emitter::ApplyCallback(Records, Out)) in TableGenMain() 144 status = MainFn ? MainFn(Out, Records) : 1; in TableGenMain() 100 RecordKeeper Records; TableGenMain() local
|
H A D | DetailedRecordsBackend.cpp | 1 //===- DetailedRecordBackend.cpp - Detailed Records Report -*- C++ -*-===// 10 // variables, classes, and records in complete detail. It includes more 33 const RecordKeeper &Records; 36 explicit DetailedRecordsEmitter(const RecordKeeper &RK) : Records(RK) {} 64 OS << formatv("DETAILED RECORDS for file {0}\n", Records.getInputFilename()); in run() 75 const auto GlobalList = Records.getGlobals(); in printVariables() 85 const auto &ClassList = Records.getClasses(); in printClasses() 97 // Print the records, including the defm sequences, supercasses, and fields. 99 const auto &RecordList = Records 39 RecordKeeper &Records; global() member in __anon334cc96a0111::DetailedRecordsEmitter [all...] |
/llvm-project/llvm/docs/PDB/ |
H A D | CodeViewTypes.rst | 2 CodeView Type Records 15 CodeView type records that LLVM understands. This document does not describe 17 because the records are clearly deprecated and can only appear in very old 18 software (e.g. the 16-bit types). On other cases, it is because the records 21 made obsolete by newer records, or any number of other reasons. However, the 22 records we describe here should cover 99% of type records that one can expect 28 We can think of a sequence of CodeView type records as an array of variable length 29 `leaf records`. Each such record describes its own length as part of a fixed-size 30 header, as well as the kind of record it is. Leaf records are either padded to 4 37 ``LF_FIELDLIST`` -- contains a series of embedded records. While the outer [all …]
|
H A D | CodeViewSymbols.rst | 2 CodeView Symbol Records 15 CodeView symbol records that LLVM understands. Like 16 :doc:`CodeView Type Records <CodeViewTypes>`, we describe only the important 22 Symbol records share one major similarity with :doc:`type records <CodeViewTypes>`: 25 of symbol records can be processed with largely the same code as that which processes 26 type records. There are several important differences between symbol and type records: 28 * Symbol records only appear in the :doc:`PublicStream`, :doc:`GlobalStream`, and 30 * Type records only appear in the :doc:`TPI & IPI streams <TpiStream>`. 31 * While types are referenced from other CodeView records via :ref:`type indices <type_indices>`, 32 symbol records are referenced by the byte offset of the record in the stream that it appears [all …]
|
/llvm-project/lldb/utils/TableGen/ |
H A D | LLDBTableGen.cpp | 35 cl::values(clEnumValN(PrintRecords, "print-records", 36 "Print all records to stdout (default)"), 38 "Dump all records as machine-readable JSON"), 46 static bool LLDBTableGenMain(raw_ostream &OS, const RecordKeeper &Records) { in LLDBTableGenMain() argument 49 OS << Records; // No argument, dump all contents in LLDBTableGenMain() 52 EmitJSON(Records, OS); in LLDBTableGenMain() 55 EmitOptionDefs(Records, OS); in LLDBTableGenMain() 58 EmitPropertyDefs(Records, OS); in LLDBTableGenMain() 61 EmitPropertyEnumDefs(Records, OS); in LLDBTableGenMain()
|
/llvm-project/lld/test/COFF/ |
H A D | precomp-summary-fail.test | 17 SUMMARY-NEXT: 8 Input type records 18 SUMMARY-NEXT: 232 Input type records bytes 19 SUMMARY-NEXT: 3 Merged TPI records 20 SUMMARY-NEXT: 2 Merged IPI records 22 SUMMARY-NEXT: 0 Global symbol records 23 SUMMARY-NEXT: 4 Module symbol records 24 SUMMARY-NEXT: 0 Public symbol records
|
/llvm-project/llvm/include/llvm/XRay/ |
H A D | Trace.h | 9 // Defines the XRay Trace class representing records in an XRay trace file. 26 /// A Trace object represents the records that have been loaded from XRay 49 RecordVector Records; variable 63 const_iterator begin() const { return Records.begin(); } in begin() 64 const_iterator end() const { return Records.end(); } in end() 65 bool empty() const { return Records.empty(); } in empty() 66 size_type size() const { return Records.size(); } in size() 69 /// This function will attempt to load XRay trace records from the provided 73 /// This function will attempt to load XRay trace records from the provided
|
/llvm-project/llvm/docs/TableGen/ |
H A D | BackGuide.rst | 16 information is coded in a declarative style involving classes and records, 17 which are then processed by TableGen. The internalized records are passed on 18 to various backends, which extract information from a subset of the records 37 and records that are collected from the TableGen source files by the 48 classes and records parsed and collected by TableGen. The ``RecordKeeper`` 52 There are two maps in the recordkeeper, one for classes and one for records 63 * A counter for naming anonymous records. 69 * Functions to get a subset of the records based on their parent classes. 71 * Functions to get individual classes, records, and globals, by name. 81 classes and one for the records [all...] |
H A D | ProgRef.rst | 16 information is coded in a declarative style involving classes and records, 17 which are then processed by TableGen. The internalized records are passed on 18 to various *backends*, which extract information from a subset of the records 56 TableGen source files contain two primary items: *abstract records* and 57 *concrete records*. In this and other TableGen documents, abstract records 59 not map onto them.) In addition, concrete records are usually just called 60 records, although sometimes the term *record* refers to both classes and 61 concrete records. The distinction should be clear in context. 63 Classes and concrete records hav [all...] |
/llvm-project/llvm/unittests/XRay/ |
H A D | FDRProducerConsumerTest.cpp | 138 std::vector<std::unique_ptr<Record>> Records; in TYPED_TEST_P() 139 LogBuilderConsumer C(Records); in TYPED_TEST_P() local 147 ASSERT_THAT(Records, Not(IsEmpty())); in TYPED_TEST_P() 151 for (auto &P : Records) in TYPED_TEST_P() 156 ASSERT_THAT(Records, SizeIs(2)); in TYPED_TEST_P() 157 EXPECT_THAT(Records[1]->getRecordType(), Eq(R->getRecordType())); in TYPED_TEST_P() 177 std::vector<std::unique_ptr<Record>> Records; in TYPED_TEST_P() 178 LogBuilderConsumer C(Records); in TYPED_TEST_P() 186 ASSERT_THAT(Records, Not(IsEmpty())); in TYPED_TEST_P() 190 for (auto &P : Records) in TYPED_TEST_P() 180 std::vector<std::unique_ptr<Record>> Records; TYPED_TEST_P() local [all...] |
/llvm-project/llvm/test/Bitcode/ |
H A D | dbg-record-roundtrip.ll | 11 ; RUN: | FileCheck %s --check-prefixes=RECORDS 16 ; RUN: | FileCheck %s --check-prefixes=RECORDS 22 ; RUN: | FileCheck %s --check-prefixes=RECORDS 32 ;; Confirm we're producing RemoveDI records from various tools. 67 ; RECORDS: entry: 68 ; RECORDS-NEXT: dbg_value(i32 %p, ![[e:[0-9]+]], !DIExpression(), ![[dbg:[0-9]+]]) 69 ; RECORDS-NEXT: dbg_value(![[empty:[0-9]+]], ![[e]], !DIExpression(), ![[dbg]]) 70 ; RECORDS-NEXT: dbg_value(i32 poison, ![[e]], !DIExpression(), ![[dbg]]) 71 ; RECORDS-NEXT: dbg_value(i32 1, ![[f:[0-9]+]], !DIExpression(), ![[dbg]]) 78 ; RECORDS-NEXT: dbg_value(!DIArgList(i32 %p, i32 0, i32 %0, i32 poison), ![[f]], !DIExpression(DW_O… [all …]
|
/llvm-project/llvm/unittests/DebugInfo/CodeView/ |
H A D | TypeIndexDiscoveryTest.cpp | 43 // Choose between type or symbol records. The checking code doesn't care in checkTypeReferences() 47 CVRecords = TTB->records(); in checkTypeReferences() 60 auto Records = CRB->end(TTB->nextTypeIndex()); in writeFieldList() local 61 ASSERT_EQ(1u, Records.size()); in writeFieldList() 62 TTB->insertRecordBytes(Records.front().RecordData); in writeFieldList() 66 template <typename... T> void writeTypeRecords(T &&... Records) { in writeTypeRecords() argument 67 writeTypeRecordsImpl(std::forward<T>(Records)...); in writeTypeRecords() 68 ASSERT_EQ(sizeof...(T), TTB->records().size()); in writeTypeRecords() 72 template <typename... T> void writeSymbolRecords(T &&... Records) { in writeSymbolRecords() argument 73 writeSymbolRecordsImpl(std::forward<T>(Records)...); in writeSymbolRecords() [all …]
|