@@ -135,6 +135,12 @@ void DagMap::handleMidCode(MidCode c){
135
135
varToNode[c.target ] = node;
136
136
node->possibleNames .insert (c.target );
137
137
assigned.insert (c.target );
138
+ if (c.target > 0 ) {
139
+ SymbolEntry* entry = MidCode::table->getSymbolById (c.target );
140
+ if (entry->scope == " " ) {
141
+ mustOut.insert (c.target );
142
+ }
143
+ }
138
144
break ;
139
145
}
140
146
case MIDNEGATE:
@@ -153,6 +159,12 @@ void DagMap::handleMidCode(MidCode c){
153
159
varToNode[c.target ] = node;
154
160
node->possibleNames .insert (c.target );
155
161
assigned.insert (c.target );
162
+ if (c.target > 0 ) {
163
+ SymbolEntry* entry = MidCode::table->getSymbolById (c.target );
164
+ if (entry->scope == " " ) {
165
+ mustOut.insert (c.target );
166
+ }
167
+ }
156
168
break ;
157
169
}
158
170
case MIDASSIGN:
@@ -177,6 +189,12 @@ void DagMap::handleMidCode(MidCode c){
177
189
varToNode[c.target ] = node1;
178
190
node1->possibleNames .insert (c.target );
179
191
assigned.insert (c.target );
192
+ if (c.target > 0 ) {
193
+ SymbolEntry* entry = MidCode::table->getSymbolById (c.target );
194
+ if (entry->scope == " " ) {
195
+ mustOut.insert (c.target );
196
+ }
197
+ }
180
198
break ;
181
199
}
182
200
case MIDPRINTCHAR:
@@ -297,8 +315,9 @@ vector<MidCode> DagMap::dumpMidCode() {
297
315
// 开始确定导出顺序
298
316
vector<DagNode*>q;
299
317
int i = 0 ;
300
- while (i < nodes.size ()) {
301
- DagNode* tmp=nullptr ;
318
+ DagNode* tmp = nullptr ;
319
+ while (i < nodes.size () ) {
320
+ tmp = nullptr ;
302
321
for (int j = 0 ; j < nodes.size (); j++) {
303
322
if (nodes[j]->dumped ) { continue ; }
304
323
else if (nodes[j]->isLeaf ) {
0 commit comments