-
Notifications
You must be signed in to change notification settings - Fork 111
/
llvm_propeller_cfg.proto
62 lines (51 loc) · 1.24 KB
/
llvm_propeller_cfg.proto
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
syntax = "proto2";
package devtools_crosstool_autofdo;
// // Edges.
// // Next Available: 5.
message CFGEdgePb {
// Whole-program identifier for a CFGNode.
// Next Available: 3
message NodeId {
optional uint32 function_index = 1;
optional uint32 bb_index = 2;
}
// Id of sink bb.
optional NodeId sink = 2;
// Frequency count of the jump from profile.
optional uint64 weight = 3;
enum Kind {
BRANCH_OR_FALLTHROUGH = 0;
CALL = 1;
RETURN = 2;
}
// Edge kind.
optional Kind kind = 4;
}
// Basic blocks.
// Next Available: 5.
message CFGNodePb {
// Next available: 5
message MetadataPb {
optional bool can_fallthrough = 1;
optional bool has_return = 2;
optional bool has_tail_call = 3;
optional bool is_landing_pad = 4;
}
optional uint64 size = 1;
repeated CFGEdgePb out_edges = 2;
optional uint32 bb_id = 3;
optional MetadataPb metadata = 4;
}
//
// Control flow graph where basic blocks are vertices and jumps are edges.
// Next Available: 5
message ControlFlowGraphPb {
repeated CFGNodePb node = 1;
repeated string name = 2;
optional uint32 function_index = 3;
optional string section_name = 4;
}
// Next Available: 2.
message ProgramCfgPb {
repeated ControlFlowGraphPb cfg = 1;
}