- Timestamp:
- Aug 4, 2021, 1:24:51 PM (3 years ago)
- Branches:
- ADT, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, master, new-ast-unique-expr, pthread-emulation, qualifiedEnum
- Children:
- 5541ea3d
- Parents:
- 1e567ab (diff), da602aec (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/ControlStruct
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
src/ControlStruct/ExceptDecl.cc
r1e567ab rdf5b2c8 10 10 // Created On : Tue Jul 20 04:10:50 2021 11 11 // Last Modified By : Henry Xue 12 // Last Modified On : Mon Jul 26 12:55:28202113 // Update Count : 312 // Last Modified On : Tue Aug 03 10:42:26 2021 13 // Update Count : 4 14 14 // 15 15 … … 278 278 cloneAll( forallClause, structDecl->parameters ); 279 279 return structDecl; 280 } 281 282 ObjectDecl * ehmTypeIdExtern( 283 const std::string & exceptionName, 284 const std::list< Expression *> & parameters 285 ) { 286 StructInstType * typeIdType = new StructInstType( 287 Type::Const, 288 Virtual::typeIdType( exceptionName ) 289 ); 290 cloneAll( parameters, typeIdType->parameters ); 291 return new ObjectDecl( 292 Virtual::typeIdName( exceptionName ), 293 Type::Extern, 294 LinkageSpec::Cforall, 295 nullptr, 296 typeIdType, 297 nullptr, 298 { new Attribute( "cfa_linkonce" ) } 299 ); 280 300 } 281 301 … … 421 441 422 442 if ( objectDecl->get_storageClasses().is_extern ) { // if extern 443 if ( !parameters.empty() ) { // forall variant 444 declsToAddBefore.push_back( ehmTypeIdExtern( exceptionName, parameters ) ); 445 } 423 446 return ehmExternVtable( exceptionName, parameters, tableName ); 424 447 } -
src/ControlStruct/ExceptTranslate.cc
r1e567ab rdf5b2c8 9 9 // Author : Andrew Beach 10 10 // Created On : Wed Jun 14 16:49:00 2017 11 // Last Modified By : Andrew Beach12 // Last Modified On : Wed Jun 24 11:18:00 202013 // Update Count : 1 711 // Last Modified By : Henry Xue 12 // Last Modified On : Tue Aug 03 10:05:51 2021 13 // Update Count : 18 14 14 // 15 15 … … 320 320 static_cast<ObjectDecl *>( handler->get_decl() ); 321 321 ObjectDecl * local_except = handler_decl->clone(); 322 local_except->set_init( 323 new ListInit({ new SingleInit( 324 new VirtualCastExpr( nameOf( except_obj ), 325 local_except->get_type() 326 ) 327 ) }) 322 VirtualCastExpr * vcex = new VirtualCastExpr( 323 nameOf( except_obj ), 324 local_except->get_type() 328 325 ); 326 vcex->location = handler->location; 327 local_except->set_init( new ListInit({ new SingleInit( vcex ) }) ); 329 328 block->push_back( new DeclStmt( local_except ) ); 330 329 … … 392 391 393 392 // Check for type match. 394 Expression * cond = UntypedExpr::createAssign( nameOf( local_except ), 395 new VirtualCastExpr( nameOf( except_obj ), 396 local_except->get_type()->clone() ) ); 393 VirtualCastExpr * vcex = new VirtualCastExpr( 394 nameOf( except_obj ), 395 local_except->get_type()->clone() 396 ); 397 vcex->location = modded_handler->location; 398 Expression * cond = UntypedExpr::createAssign( 399 nameOf( local_except ), vcex ); 397 400 398 401 // Add the check on the conditional if it is provided.
Note: See TracChangeset
for help on using the changeset viewer.