LEFT | RIGHT |
(no file at all) | |
1 // Copyright 2013 The Go Authors. All rights reserved. | 1 // Copyright 2013 The Go Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style | 2 // Use of this source code is governed by a BSD-style |
3 // license that can be found in the LICENSE file. | 3 // license that can be found in the LICENSE file. |
4 | 4 |
5 typedef struct Flow Flow; | 5 typedef struct Flow Flow; |
6 typedef struct Graph Graph; | 6 typedef struct Graph Graph; |
7 | 7 |
8 struct Flow { | 8 struct Flow { |
9 Prog* prog; // actual instruction | 9 Prog* prog; // actual instruction |
10 Flow* p1; // predecessors of this instruction: p1, | 10 Flow* p1; // predecessors of this instruction: p1, |
(...skipping 18 matching lines...) Expand all Loading... |
29 // After calling flowrpo, rpo lists the flow nodes in reverse postorder, | 29 // After calling flowrpo, rpo lists the flow nodes in reverse postorder, |
30 // and each non-dead Flow node f has g->rpo[f->rpo] == f. | 30 // and each non-dead Flow node f has g->rpo[f->rpo] == f. |
31 Flow** rpo; | 31 Flow** rpo; |
32 }; | 32 }; |
33 | 33 |
34 void fixjmp(Prog*); | 34 void fixjmp(Prog*); |
35 Graph* flowstart(Prog*, int); | 35 Graph* flowstart(Prog*, int); |
36 void flowrpo(Graph*); | 36 void flowrpo(Graph*); |
37 void flowend(Graph*); | 37 void flowend(Graph*); |
38 void mergetemp(Prog*); | 38 void mergetemp(Prog*); |
| 39 void nilopt(Prog*); |
39 int noreturn(Prog*); | 40 int noreturn(Prog*); |
40 int regtyp(Addr*); | 41 int regtyp(Addr*); |
| 42 int sameaddr(Addr*, Addr*); |
| 43 int smallindir(Addr*, Addr*); |
| 44 int stackaddr(Addr*); |
41 Flow* uniqp(Flow*); | 45 Flow* uniqp(Flow*); |
42 Flow* uniqs(Flow*); | 46 Flow* uniqs(Flow*); |
LEFT | RIGHT |