Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/GenPoly/Box.cc

    rbc3127d r2ae171d8  
    141141                        virtual StructDecl *mutate( StructDecl *structDecl ) override;
    142142                        virtual UnionDecl *mutate( UnionDecl *unionDecl ) override;
    143                         virtual TraitDecl *mutate( TraitDecl *unionDecl ) override;
    144143                        virtual TypeDecl *mutate( TypeDecl *typeDecl ) override;
    145144                        virtual TypedefDecl *mutate( TypedefDecl *typedefDecl ) override;
     
    217216                  private:
    218217                };
     218
    219219        } // anonymous namespace
    220220
     
    896896                                addAdapterParams( adapteeApp, arg, param, adapterType->get_parameters().end(), realParam, tyVars );
    897897                                bodyStmt = new ExprStmt( noLabels, adapteeApp );
     898//                      } else if ( isPolyType( adaptee->get_returnVals().front()->get_type(), tyVars ) ) {
    898899                        } else if ( isDynType( adaptee->get_returnVals().front()->get_type(), tyVars ) ) {
    899900                                // return type T
     
    12981299                }
    12991300
     1301                /// determines if `pref` is a prefix of `str`
     1302                bool isPrefix( const std::string & str, const std::string & pref ) {
     1303                        if ( pref.size() > str.size() ) return false;
     1304                        auto its = std::mismatch( pref.begin(), pref.end(), str.begin() );
     1305                        return its.first == pref.end();
     1306                }
     1307
    13001308                DeclarationWithType * Pass2::mutate( FunctionDecl *functionDecl ) {
    13011309                        functionDecl = safe_dynamic_cast< FunctionDecl * > ( handleDecl( functionDecl ) );
     
    13441352                }
    13451353
    1346                 TraitDecl * Pass2::mutate( TraitDecl *aggDecl ) {
    1347                         return handleAggDecl( aggDecl );
    1348                 }
    1349 
    13501354                TypeDecl * Pass2::mutate( TypeDecl *typeDecl ) {
    13511355                        addToTyVarMap( typeDecl, scopeTyVars );
     
    13731377                Type *Pass2::mutate( FunctionType *funcType ) {
    13741378                        scopeTyVars.beginScope();
    1375 
    13761379                        makeTyVarMap( funcType, scopeTyVars );
    13771380
     
    15471550                                        // (alloca was previously used, but can't be safely used in loops)
    15481551                                        Type *declType = objectDecl->get_type();
    1549                                         ObjectDecl *newBuf = new ObjectDecl( bufNamer.newName(), Type::StorageClasses(), LinkageSpec::C, 0,
     1552                                        std::string bufName = bufNamer.newName();
     1553                                        ObjectDecl *newBuf = new ObjectDecl( bufName, Type::StorageClasses(), LinkageSpec::C, 0,
    15501554                                                new ArrayType( Type::Qualifiers(), new BasicType( Type::Qualifiers(), BasicType::Kind::Char), new NameExpr( sizeofName( mangleType(declType) ) ),
    1551                                                 true, false, std::list<Attribute*>{ new Attribute( "aligned", std::list<Expression*>{ new ConstantExpr( Constant::from_int(8) ) } ) } ), 0 );
     1555                                                true, false, std::list<Attribute*>{ new Attribute( std::string{"aligned"}, std::list<Expression*>{ new ConstantExpr( Constant::from_int(8) ) } ) } ), 0 );
    15521556                                        stmtsToAdd.push_back( new DeclStmt( noLabels, newBuf ) );
    15531557
    15541558                                        delete objectDecl->get_init();
    1555                                         objectDecl->set_init( new SingleInit( new VariableExpr( newBuf ) ) );
     1559
     1560                                        objectDecl->set_init( new SingleInit( new NameExpr( bufName ) ) );
    15561561                                }
    15571562                        }
Note: See TracChangeset for help on using the changeset viewer.