1+ /**
2+ ; RUN: cd %p
3+ ; RUN: %LLVM2GRAPHML_EXEC --output=%t.xml main.ll
4+ ; RUN: %GREMLIN_CONSOLE_EXEC -e %s %t.xml | %FILECHECK_EXEC %s --match-full-lines
5+ */
6+
7+ // / Prepare
8+
9+ graph = TinkerGraph . open()
10+ g = graph. traversal()
11+ g. io(args[0 ]). read(). iterate()
12+
13+ def dump (tr ) {
14+ tr. unfold(). sideEffect{println it}. iterate()
15+ }
16+
17+ // / Assertions
18+
19+ dump(g. V(). hasLabel(' function' ). valueMap(' name' ))
20+ // CHECK: name=[abs]
21+
22+ dump(g. V(). hasLabel(' function' ). has(' name' , ' abs' ). valueMap(' basicBlockCount' ))
23+ // CHECK-NEXT: basicBlockCount=[4]
24+
25+ dump(g. V(). hasLabel(' basicBlock' ). count())
26+ // CHECK-NEXT: 4
27+
28+ dump(g. V(). hasLabel(' basicBlock' ). out(' module' ). valueMap(' moduleIdentifier' ). dedup())
29+ // CHECK-NEXT: moduleIdentifier=[main.ll]
30+
31+ dump(g. V(). hasLabel(' basicBlock' ). out(' function' ). valueMap(' name' ). dedup())
32+ // CHECK-NEXT: name=[abs]
33+
34+
35+ // Entry
36+
37+ dump(g. V(). hasLabel(' basicBlock' ). has(' name' , ' ' ). count())
38+ // CHECK-NEXT: 1
39+
40+ dump(g. V(). hasLabel(' basicBlock' ). has(' name' , ' ' ). valueMap(' instructionCount' ))
41+ // CHECK-NEXT: instructionCount=[3]
42+
43+ dump(g. V(). hasLabel(' basicBlock' ). has(' name' , ' ' ). out(' predecessor' ). count())
44+ // CHECK-NEXT: 0
45+
46+ dump(g. V(). hasLabel(' basicBlock' ). has(' name' , ' ' ). out(' predecessor' ). valueMap(' name' ))
47+ // empty
48+
49+ dump(g. V(). hasLabel(' basicBlock' ). has(' name' , ' ' ). out(' successor' ). count())
50+ // CHECK-NEXT: 2
51+
52+ dump(g. V(). hasLabel(' basicBlock' ). has(' name' , ' ' ). out(' successor' ). order(). by(' name' , asc). valueMap(' name' ))
53+ // CHECK-NEXT: name=[else]
54+ // CHECK-NEXT: name=[then]
55+
56+
57+ // Then
58+
59+ dump(g. V(). hasLabel(' basicBlock' ). has(' name' , ' then' ). count())
60+ // CHECK-NEXT: 1
61+
62+ dump(g. V(). hasLabel(' basicBlock' ). has(' name' , ' then' ). valueMap(' instructionCount' ))
63+ // CHECK-NEXT: instructionCount=[3]
64+
65+ dump(g. V(). hasLabel(' basicBlock' ). has(' name' , ' then' ). out(' predecessor' ). count())
66+ // CHECK-NEXT: 1
67+
68+ dump(g. V(). hasLabel(' basicBlock' ). has(' name' , ' then' ). out(' predecessor' ). valueMap(' name' ))
69+ // CHECK-NEXT: name=[]
70+
71+ dump(g. V(). hasLabel(' basicBlock' ). has(' name' , ' then' ). out(' successor' ). count())
72+ // CHECK-NEXT: 1
73+
74+ dump(g. V(). hasLabel(' basicBlock' ). has(' name' , ' then' ). out(' successor' ). valueMap(' name' ))
75+ // CHECK-NEXT: name=[end]
76+
77+
78+ // Else
79+
80+ dump(g. V(). hasLabel(' basicBlock' ). has(' name' , ' else' ). count())
81+ // CHECK-NEXT: 1
82+
83+ dump(g. V(). hasLabel(' basicBlock' ). has(' name' , ' else' ). valueMap(' instructionCount' ))
84+ // CHECK-NEXT: instructionCount=[2]
85+
86+ dump(g. V(). hasLabel(' basicBlock' ). has(' name' , ' else' ). out(' predecessor' ). count())
87+ // CHECK-NEXT: 1
88+
89+ dump(g. V(). hasLabel(' basicBlock' ). has(' name' , ' else' ). out(' predecessor' ). valueMap(' name' ))
90+ // CHECK-NEXT: name=[]
91+
92+ dump(g. V(). hasLabel(' basicBlock' ). has(' name' , ' else' ). out(' successor' ). count())
93+ // CHECK-NEXT: 1
94+
95+ dump(g. V(). hasLabel(' basicBlock' ). has(' name' , ' else' ). out(' successor' ). valueMap(' name' ))
96+ // CHECK-NEXT: name=[end]
97+
98+
99+ // End
100+
101+ dump(g. V(). hasLabel(' basicBlock' ). has(' name' , ' end' ). count())
102+ // CHECK-NEXT: 1
103+
104+ dump(g. V(). hasLabel(' basicBlock' ). has(' name' , ' end' ). valueMap(' instructionCount' ))
105+ // CHECK-NEXT: instructionCount=[2]
106+
107+ dump(g. V(). hasLabel(' basicBlock' ). has(' name' , ' end' ). out(' predecessor' ). count())
108+ // CHECK-NEXT: 2
109+
110+ dump(g. V(). hasLabel(' basicBlock' ). has(' name' , ' end' ). out(' predecessor' ). order(). by(' name' , asc). valueMap(' name' ))
111+ // CHECK-NEXT: name=[else]
112+ // CHECK-NEXT: name=[then]
113+
114+ dump(g. V(). hasLabel(' basicBlock' ). has(' name' , ' end' ). out(' successor' ). count())
115+ // CHECK-NEXT: 0
116+
117+ dump(g. V(). hasLabel(' basicBlock' ). has(' name' , ' end' ). out(' successor' ). valueMap(' name' ))
118+ // empty
119+
120+
121+ :exit
122+ // CHECK-EMPTY:
0 commit comments