LLVM: include/llvm/DebugInfo/CodeView/SymbolVisitorCallbackPipeline.h Source File (original) (raw)

Go to the documentation of this file.

1

2

3

4

5

6

7

8

9#ifndef LLVM_DEBUGINFO_CODEVIEW_SYMBOLVISITORCALLBACKPIPELINE_H

10#define LLVM_DEBUGINFO_CODEVIEW_SYMBOLVISITORCALLBACKPIPELINE_H

11

15#include

16

17namespace llvm {

19

21public:

23

25 for (auto *Visitor : Pipeline) {

26 if (auto EC = Visitor->visitUnknownSymbol(Record))

27 return EC;

28 }

30 }

31

33 for (auto *Visitor : Pipeline) {

34 if (auto EC = Visitor->visitSymbolBegin(Record, Offset))

35 return EC;

36 }

38 }

39

41 for (auto *Visitor : Pipeline) {

42 if (auto EC = Visitor->visitSymbolBegin(Record))

43 return EC;

44 }

46 }

47

49 for (auto *Visitor : Pipeline) {

50 if (auto EC = Visitor->visitSymbolEnd(Record))

51 return EC;

52 }

54 }

55

57 Pipeline.push_back(&Callbacks);

58 }

59

60#define SYMBOL_RECORD(EnumName, EnumVal, Name) \

61 Error visitKnownRecord(CVSymbol &CVR, Name &Record) override { \

62 for (auto Visitor : Pipeline) { \

63 if (auto EC = Visitor->visitKnownRecord(CVR, Record)) \

64 return EC; \

65 } \

66 return Error::success(); \

67 }

68#define SYMBOL_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)

69#include "llvm/DebugInfo/CodeView/CodeViewSymbols.def"

70

71private:

72 std::vector<SymbolVisitorCallbacks *> Pipeline;

73};

74

75}

76}

77

78#endif

Lightweight error class with error context and mandatory checking.

static ErrorSuccess success()

Create a success value.

Error visitUnknownSymbol(CVSymbol &Record) override

Action to take on unknown symbols. By default, they are ignored.

Definition SymbolVisitorCallbackPipeline.h:24

Error visitSymbolBegin(CVSymbol &Record, uint32_t Offset) override

Paired begin/end actions for all symbols.

Definition SymbolVisitorCallbackPipeline.h:32

void addCallbackToPipeline(SymbolVisitorCallbacks &Callbacks)

Definition SymbolVisitorCallbackPipeline.h:56

Error visitSymbolBegin(CVSymbol &Record) override

Definition SymbolVisitorCallbackPipeline.h:40

SymbolVisitorCallbackPipeline()=default

Error visitSymbolEnd(CVSymbol &Record) override

Definition SymbolVisitorCallbackPipeline.h:48

CVRecord< SymbolKind > CVSymbol

This is an optimization pass for GlobalISel generic memory operations.