Changes in src/SymTab/Validate.cc [954c954:3ff4c1e]
- File:
-
- 1 edited
-
src/SymTab/Validate.cc (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/SymTab/Validate.cc
r954c954 r3ff4c1e 64 64 #include "Common/UniqueName.h" // for UniqueName 65 65 #include "Common/utility.h" // for operator+, cloneAll, deleteAll 66 #include "CompilationState.h" // skip some passes in new-ast build 66 67 #include "Concurrency/Keywords.h" // for applyKeywords 67 68 #include "FixFunction.h" // for FixFunction … … 368 369 mutateAll( translationUnit, compoundliteral ); 369 370 }); 370 Stats::Time::TimeBlock("Resolve With Expressions", [&]() { 371 ResolvExpr::resolveWithExprs( translationUnit ); // must happen before FixObjectType because user-code is resolved and may contain with variables 372 }); 371 if (!useNewAST) { 372 Stats::Time::TimeBlock("Resolve With Expressions", [&]() { 373 ResolvExpr::resolveWithExprs( translationUnit ); // must happen before FixObjectType because user-code is resolved and may contain with variables 374 }); 375 } 373 376 } 374 377 { 375 378 Stats::Heap::newPass("validate-F"); 376 379 Stats::Time::BlockGuard guard("validate-F"); 377 Stats::Time::TimeCall("Fix Object Type", 378 FixObjectType::fix, translationUnit); 380 if (!useNewAST) { 381 Stats::Time::TimeCall("Fix Object Type", 382 FixObjectType::fix, translationUnit); 383 } 379 384 Stats::Time::TimeCall("Array Length", 380 385 ArrayLength::computeLength, translationUnit); … … 383 388 Stats::Time::TimeCall("Fix Label Address", 384 389 mutateAll<LabelAddressFixer>, translationUnit, labelAddrFixer); 385 Stats::Time::TimeCall("Handle Attributes", 386 Validate::handleAttributes, translationUnit); 390 if (!useNewAST) { 391 Stats::Time::TimeCall("Handle Attributes", 392 Validate::handleAttributes, translationUnit); 393 } 387 394 } 388 395 } … … 1340 1347 1341 1348 void ArrayLength::previsit( ArrayType * type ) { 1342 if ( type->dimension ) { 1343 // need to resolve array dimensions early so that constructor code can correctly determine 1344 // if a type is a VLA (and hence whether its elements need to be constructed) 1345 ResolvExpr::findSingleExpression( type->dimension, Validate::SizeType->clone(), indexer ); 1346 1347 // must re-evaluate whether a type is a VLA, now that more information is available 1348 // (e.g. the dimension may have been an enumerator, which was unknown prior to this step) 1349 type->isVarLen = ! InitTweak::isConstExpr( type->dimension ); 1349 if (!useNewAST) { 1350 if ( type->dimension ) { 1351 // need to resolve array dimensions early so that constructor code can correctly determine 1352 // if a type is a VLA (and hence whether its elements need to be constructed) 1353 ResolvExpr::findSingleExpression( type->dimension, Validate::SizeType->clone(), indexer ); 1354 1355 // must re-evaluate whether a type is a VLA, now that more information is available 1356 // (e.g. the dimension may have been an enumerator, which was unknown prior to this step) 1357 type->isVarLen = ! InitTweak::isConstExpr( type->dimension ); 1358 } 1350 1359 } 1351 1360 }
Note:
See TracChangeset
for help on using the changeset viewer.