Changes in src/AST/Convert.cpp [a62749f:6355ba7]
- File:
-
- 1 edited
-
src/AST/Convert.cpp (modified) (12 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/AST/Convert.cpp
ra62749f r6355ba7 10 10 // Created On : Thu May 09 15::37::05 2019 11 11 // Last Modified By : Andrew Beach 12 // Last Modified On : Man Jun 10 11:51:00 201913 // Update Count : 1 112 // Last Modified On : Thu May 06 19:51:00 2019 13 // Update Count : 10 14 14 // 15 15 … … 92 92 93 93 Label makeLabel(Statement * labelled, const ast::Label& label) { 94 // This probably will leak memory, but only until we get rid of the old tree.95 if ( nullptr == labelled && label.location.isSet() ) {96 labelled = new NullStmt();97 labelled->location = label.location;98 }99 94 return Label( 100 95 label.name, … … 159 154 auto&& attr = get<Attribute>().acceptL( node->attributes ); 160 155 if ( inCache( node ) ) { 161 if(node->name == "tmp") {162 std::cerr << (void*)node << "(new) in cache " << (void*)this->node << "(old)" << std::endl;163 }164 156 return nullptr; 165 157 } … … 174 166 Type::FuncSpecifiers( node->funcSpec.val ) 175 167 ); 176 if(node->name == "tmp") {177 std::cerr << (void*)node << "(new) created " << (void*)decl << "(old)" << std::endl;178 }179 168 return declWithTypePostamble( decl, node ); 180 169 } … … 1395 1384 // Local Utilities: 1396 1385 1386 #define construct(T, key, ...) ({ \ 1387 void * data = ::operator new(sizeof(T)); \ 1388 cache.emplace( key, (T*)data ); \ 1389 new (data) T( __VA_ARGS__ ); \ 1390 }) 1391 1397 1392 template<typename NewT, typename OldT> 1398 1393 NewT * getAccept1( OldT old ) { … … 1408 1403 1409 1404 template<typename NewT, typename OldC> 1410 std::vector< ast::ptr<NewT> > getAcceptV( constOldC& old ) {1405 std::vector< ast::ptr<NewT> > getAcceptV( OldC& old ) { 1411 1406 std::vector< ast::ptr<NewT> > ret; 1412 1407 ret.reserve( old.size() ); … … 1423 1418 1424 1419 template<typename NewT, typename OldC> 1425 std::deque< ast::ptr<NewT> > getAcceptD( constOldC& old ) {1420 std::deque< ast::ptr<NewT> > getAcceptD( OldC& old ) { 1426 1421 std::deque< ast::ptr<NewT> > ret; 1427 1422 for ( auto a : old ) { … … 1436 1431 getAcceptD< ast::type, decltype( old->child ) >( old->child ) 1437 1432 1438 ast::Label make_label(const Label* old) { 1439 CodeLocation const & location = 1440 ( old->labelled ) ? old->labelled->location : CodeLocation(); 1433 ast::Label make_label(Label* old) { 1441 1434 return ast::Label( 1442 location,1435 old->labelled->location, 1443 1436 old->name, 1444 1437 GET_ACCEPT_V(attributes, Attribute) … … 1471 1464 1472 1465 virtual void visit( ObjectDecl * old ) override final { 1473 if( old->name == "tmp" ) {1474 std::cerr << "building parameters for" << (void*)old << std::endl;1475 }1476 1466 auto&& type = GET_ACCEPT_1(type, Type); 1477 1467 auto&& init = GET_ACCEPT_1(init, Init); 1478 1468 auto&& bfwd = GET_ACCEPT_1(bitfieldWidth, Expr); 1479 1469 auto&& attr = GET_ACCEPT_V(attributes, Attribute); 1480 if( old->name == "tmp" ) {1481 std::cerr << "checking cache for " << (void*)old << std::endl;1482 }1483 1470 if ( inCache( old ) ) { 1484 if( old->name == "tmp" ) {1485 std::cerr << (void*)old << "(old) in cache " << (void*)this->node << "(new)" << std::endl;1486 }1487 1471 return; 1488 1472 } … … 1499 1483 ); 1500 1484 cache.emplace(old, decl); 1501 if( old->name == "tmp" ) {1502 std::cerr << (void*)old << "(old) added to cache with " << (void*)decl << "(new)" << std::endl;1503 }1504 1485 assert(cache.find( old ) != cache.end()); 1505 1486 decl->scopeLevel = old->scopeLevel; … … 1510 1491 1511 1492 this->node = decl; 1512 1513 if( old->name == "tmp" ) {1514 std::cerr << (void*)old << "(old) created " << (void*)this->node << "(new)" << std::endl;1515 }1516 1493 } 1517 1494 … … 1828 1805 } 1829 1806 1807 Label label = old->originalTarget; 1830 1808 auto stmt = new ast::BranchStmt( 1831 1809 old->location, 1832 1810 kind, 1833 make_label(& old->originalTarget),1811 make_label(&label), 1834 1812 GET_LABELS_V(old->labels) 1835 1813 );
Note:
See TracChangeset
for help on using the changeset viewer.