Changeset 4702a2c for src/ResolvExpr
- Timestamp:
- Nov 25, 2020, 3:14:30 AM (4 years ago)
- Branches:
- ADT, arm-eh, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, master, new-ast-unique-expr, pthread-emulation, qualifiedEnum
- Children:
- 0292aa4, 1389810
- Parents:
- e5c3811 (diff), bb87dd0 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - Location:
- src/ResolvExpr
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
src/ResolvExpr/CandidateFinder.cpp
re5c3811 r4702a2c 1101 1101 // unification run for side-effects 1102 1102 unify( toType, cand->expr->result, cand->env, need, have, open, symtab ); 1103 Cost thisCost = castCost( cand->expr->result, toType, cand->expr->get_lvalue(), 1104 symtab, cand->env ); 1103 Cost thisCost = 1104 (castExpr->isGenerated == ast::GeneratedFlag::GeneratedCast) 1105 ? conversionCost( cand->expr->result, toType, cand->expr->get_lvalue(), symtab, cand->env ) 1106 : castCost( cand->expr->result, toType, cand->expr->get_lvalue(), symtab, cand->env ); 1107 1105 1108 PRINT( 1106 1109 std::cerr << "working on cast with result: " << toType << std::endl; … … 1591 1594 1592 1595 // unification run for side-effects 1593 unify( toType, cand->expr->result, env, need, have, open, symtab ); 1596 bool canUnify = unify( toType, cand->expr->result, env, need, have, open, symtab ); 1597 (void) canUnify; 1594 1598 Cost thisCost = computeConversionCost( cand->expr->result, toType, cand->expr->get_lvalue(), 1599 symtab, env ); 1600 PRINT( 1601 Cost legacyCost = castCost( cand->expr->result, toType, cand->expr->get_lvalue(), 1595 1602 symtab, env ); 1596 1603 std::cerr << "Considering initialization:"; 1604 std::cerr << std::endl << " FROM: " << cand->expr->result << std::endl; 1605 std::cerr << std::endl << " TO: " << toType << std::endl; 1606 std::cerr << std::endl << " Unification " << (canUnify ? "succeeded" : "failed"); 1607 std::cerr << std::endl << " Legacy cost " << legacyCost; 1608 std::cerr << std::endl << " New cost " << thisCost; 1609 std::cerr << std::endl; 1610 ) 1597 1611 if ( thisCost != Cost::infinity ) { 1598 1612 // count one safe conversion for each value that is thrown away -
src/ResolvExpr/Resolver.h
re5c3811 r4702a2c 35 35 class StmtExpr; 36 36 class SymbolTable; 37 classTranslationUnit;37 struct TranslationUnit; 38 38 class Type; 39 39 class TypeEnvironment; … … 63 63 ast::ptr< ast::Expr > resolveInVoidContext( 64 64 const ast::Expr * expr, const ast::SymbolTable & symtab, ast::TypeEnvironment & env ); 65 /// Resolve `untyped` to the single expression whose candidate is the best match for the 65 /// Resolve `untyped` to the single expression whose candidate is the best match for the 66 66 /// given type. 67 67 ast::ptr< ast::Expr > findSingleExpression(
Note: See TracChangeset
for help on using the changeset viewer.