Changeset da602aec


Ignore:
Timestamp:
Aug 3, 2021, 10:47:58 AM (3 years ago)
Author:
Henry Xue <y58xue@…>
Branches:
ADT, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, master, new-ast-unique-expr, pthread-emulation, qualifiedEnum
Children:
df5b2c8
Parents:
42a02ce
git-author:
Henry Xue <y58xue@…> (08/03/21 10:43:53)
git-committer:
Henry Xue <y58xue@…> (08/03/21 10:47:58)
Message:

Fix forall variant extern vtable decls

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/ControlStruct/ExceptDecl.cc

    r42a02ce rda602aec  
    1010// Created On       : Tue Jul 20 04:10:50 2021
    1111// Last Modified By : Henry Xue
    12 // Last Modified On : Mon Jul 26 12:55:28 2021
    13 // Update Count     : 3
     12// Last Modified On : Tue Aug 03 10:42:26 2021
     13// Update Count     : 4
    1414//
    1515
     
    278278        cloneAll( forallClause, structDecl->parameters );
    279279        return structDecl;
     280}
     281
     282ObjectDecl * 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        );
    280300}
    281301
     
    421441
    422442                if ( objectDecl->get_storageClasses().is_extern ) { // if extern
     443                        if ( !parameters.empty() ) { // forall variant
     444                                declsToAddBefore.push_back( ehmTypeIdExtern( exceptionName, parameters ) );
     445                        }
    423446                        return ehmExternVtable( exceptionName, parameters, tableName );
    424447                }
Note: See TracChangeset for help on using the changeset viewer.