Changeset 90e683b for src/ResolvExpr/ConversionCost.cpp
- Timestamp:
- Feb 3, 2025, 11:46:55 AM (2 months ago)
- Branches:
- master
- Children:
- 54f70c6
- Parents:
- bbbff10
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified src/ResolvExpr/ConversionCost.cpp ¶
rbbbff10 r90e683b 246 246 } 247 247 if (const ast::EnumInstType * srcAsInst = dynamic_cast< const ast::EnumInstType * >( src )) { 248 if ( srcAsInst->base && !srcAsInst->base->isCfa) {248 if ( srcAsInst->base && srcAsInst->base->is_c_enum() ) { 249 249 static const ast::BasicType* integer = new ast::BasicType( ast::BasicKind::UnsignedInt ); 250 250 return ast::Pass<ConversionCost>::read( integer, dst, srcIsLvalue, symtab, env, conversionCost ); … … 324 324 conversionCostFromBasicToBasic( basicType, dstAsBasic ); 325 325 } else if ( auto dstAsEnumInst = dynamic_cast< const ast::EnumInstType * >( dst ) ) { 326 if ( dstAsEnumInst->base && !dstAsEnumInst->base->isCfa) {326 if ( dstAsEnumInst->base && dstAsEnumInst->base->is_c_enum() ) { 327 327 cost = Cost::safe; 328 328 } … … 405 405 if ( auto dstInst = dynamic_cast<const ast::EnumInstType *>( dst ) ) { 406 406 cost = enumCastCost(inst, dstInst, symtab, env); 407 } else if ( !inst->base->isCfa) {407 } else if ( inst->base->is_c_enum() ) { 408 408 static ast::ptr<ast::BasicType> integer = { new ast::BasicType( ast::BasicKind::SignedInt ) }; 409 409 cost = costCalc( integer, dst, srcIsLvalue, symtab, env ); … … 455 455 } 456 456 457 void ConversionCost::postvisit( const ast::VarArgsType * varArgsType ) { 458 (void)varArgsType; 457 void ConversionCost::postvisit( const ast::VarArgsType * ) { 459 458 if ( dynamic_cast< const ast::VarArgsType * >( dst ) ) { 460 459 cost = Cost::zero; … … 462 461 } 463 462 464 void ConversionCost::postvisit( const ast::ZeroType * zeroType ) { 465 (void)zeroType; 463 void ConversionCost::postvisit( const ast::ZeroType * ) { 466 464 if ( dynamic_cast< const ast::ZeroType * >( dst ) ) { 467 465 cost = Cost::zero; … … 487 485 // assuming 0p is supposed to be used for pointers? 488 486 } else if ( auto dstAsEnumInst = dynamic_cast< const ast::EnumInstType * >( dst ) ) { 489 if ( dstAsEnumInst->base && !dstAsEnumInst->base->isCfa) {487 if ( dstAsEnumInst->base && dstAsEnumInst->base->is_c_enum() ) { 490 488 cost = Cost::safe; 491 489 } … … 493 491 } 494 492 495 void ConversionCost::postvisit( const ast::OneType * oneType ) { 496 (void)oneType; 493 void ConversionCost::postvisit( const ast::OneType * ) { 497 494 if ( dynamic_cast< const ast::OneType * >( dst ) ) { 498 495 cost = Cost::zero; … … 508 505 } 509 506 } else if ( auto dstAsEnumInst = dynamic_cast< const ast::EnumInstType * >( dst ) ) { 510 if ( dstAsEnumInst->base && !dstAsEnumInst->base->isCfa) {507 if ( dstAsEnumInst->base && dstAsEnumInst->base->is_c_enum() ) { 511 508 cost = Cost::safe; 512 509 }
Note: See TracChangeset
for help on using the changeset viewer.