Changeset bee0694


Ignore:
Timestamp:
Jan 29, 2019, 4:15:27 PM (5 years ago)
Author:
Thierry Delisle <tdelisle@…>
Branches:
no_list
Children:
bbbc067
Parents:
70a1c3ae
Message:

Changed std::list<Label> to vector

Location:
src
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • src/CodeGen/CodeGenerator.cc

    r70a1c3ae rbee0694  
    6363        } // extension
    6464
    65         CodeGenerator::LabelPrinter & CodeGenerator::LabelPrinter::operator()( std::list< Label > & l ) {
     65        CodeGenerator::LabelPrinter & CodeGenerator::LabelPrinter::operator()( std::vector< Label > & l ) {
    6666                labels = &l;
    6767                return *this;
     
    6969
    7070        ostream & operator<<( ostream & output, CodeGenerator::LabelPrinter & printLabels ) {
    71                 std::list< Label > & labs = *printLabels.labels;
     71                std::vector< Label > & labs = *printLabels.labels;
    7272                // l.unique(); // assumes a sorted list. Why not use set? Does order matter?
    7373                for ( Label & l : labs ) {
     
    911911                if ( ! asmStmt->get_gotolabels().empty() ) {
    912912                        output << " : ";
    913                         for ( std::list<Label>::iterator begin = asmStmt->get_gotolabels().begin();; ) {
     913                        for ( std::vector< Label > ::iterator begin = asmStmt->get_gotolabels().begin();; ) {
    914914                                output << *begin++;
    915915                                if ( begin == asmStmt->get_gotolabels().end() ) break;
  • src/CodeGen/CodeGenerator.h

    r70a1c3ae rbee0694  
    124124                struct LabelPrinter {
    125125                        LabelPrinter(CodeGenerator &cg) : cg(cg), labels( 0 ) {}
    126                         LabelPrinter & operator()( std::list< Label > & l );
     126                        LabelPrinter & operator()( std::vector< Label > & l );
    127127                        CodeGenerator & cg;
    128                         std::list< Label > * labels;
     128                        std::vector< Label > * labels;
    129129                };
    130130
  • src/ControlStruct/LabelFixer.cc

    r70a1c3ae rbee0694  
    5050        // prune to at most one label definition for each statement
    5151        void LabelFixer::previsit( Statement *stmt ) {
    52                 std::list< Label > &labels = stmt->get_labels();
     52                std::vector< Label > &labels = stmt->get_labels();
    5353
    5454                if ( ! labels.empty() ) {
     
    7777        // sets the definition of the labelTable entry to be the provided
    7878        // statement for every label in the list parameter. Happens for every kind of statement
    79         Label LabelFixer::setLabelsDef( std::list< Label > &llabel, Statement *definition ) {
     79        Label LabelFixer::setLabelsDef( std::vector< Label > &llabel, Statement *definition ) {
    8080                assert( definition != 0 );
    8181                assert( llabel.size() > 0 );
     
    8383                Entry * e = new Entry( definition );
    8484
    85                 for ( std::list< Label >::iterator i = llabel.begin(); i != llabel.end(); i++ ) {
     85                for ( std::vector< Label > ::iterator i = llabel.begin(); i != llabel.end(); i++ ) {
    8686                        Label & l = *i;
    8787                        l.set_statement( definition ); // attach statement to the label to be used later
  • src/ControlStruct/LabelFixer.h

    r70a1c3ae rbee0694  
    4646                void previsit( LabelAddressExpr *addrExpr );
    4747
    48                 Label setLabelsDef( std::list< Label > &, Statement *definition );
     48                Label setLabelsDef( std::vector< Label > &, Statement *definition );
    4949                template< typename UsageNode >
    5050                void setLabelsUsg( Label, UsageNode *usage = 0 );
  • src/ControlStruct/MLEMutator.cc

    r70a1c3ae rbee0694  
    7070                        if ( ! get_breakLabel().empty() ) {
    7171                                std::list< Statement * >::iterator next = k+1;
    72                                 std::list<Label> ls; ls.push_back( get_breakLabel() );
     72                                std::vector< Label > ls; ls.push_back( get_breakLabel() );
    7373                                kids.insert( next, new NullStmt( ls ) );
    7474                                set_breakLabel("");
     
    242242                if ( e.isContUsed() ) {
    243243                        // continue label goes in the body as the last statement
    244                         std::list< Label > labels; labels.push_back( e.useContExit() );
     244                        std::vector< Label > labels; labels.push_back( e.useContExit() );
    245245                        newBody->get_kids().push_back( new NullStmt( labels ) );
    246246                } // if
     
    336336                                assert( ! enclosingControlStructures.empty() );
    337337                                if ( enclosingControlStructures.back().isFallUsed() ) {
    338                                         std::list<Label> ls{ enclosingControlStructures.back().useFallExit() };
     338                                        std::vector< Label > ls{ enclosingControlStructures.back().useFallExit() };
    339339                                        caseStmt->stmts.push_back( new NullStmt( ls ) );
    340340                                } // if
     
    346346                        if ( enclosingControlStructures.back().isFallDefaultUsed() ) {
    347347                                // add fallthrough default label if necessary
    348                                 std::list<Label> ls{ enclosingControlStructures.back().useFallDefaultExit() };
     348                                std::vector< Label > ls{ enclosingControlStructures.back().useFallDefaultExit() };
    349349                                caseStmt->stmts.push_front( new NullStmt( ls ) );
    350350                        } // if
  • src/InitTweak/GenInit.cc

    r70a1c3ae rbee0694  
    4545namespace InitTweak {
    4646        namespace {
    47                 const std::list<Label> noLabels;
     47                const std::vector< Label > noLabels;
    4848                const std::list<Expression *> noDesignators;
    4949        }
  • src/Parser/ParseNode.h

    r70a1c3ae rbee0694  
    169169
    170170struct LabelNode {
    171         std::list< Label > labels;
     171        std::vector< Label > labels;
    172172};
    173173
  • src/SynTree/Label.h

    r70a1c3ae rbee0694  
    4949inline std::ostream & operator<<( std::ostream & out, const Label & l ) { return out << l.get_name(); }
    5050
    51 static const std::list< Label > noLabels;
     51static const std::vector< Label > noLabels;
    5252
    5353// Local Variables: //
  • src/SynTree/Statement.cc

    r70a1c3ae rbee0694  
    3232using std::endl;
    3333
    34 Statement::Statement( const std::list<Label> & labels ) : labels( labels ) {}
     34Statement::Statement( const std::vector< Label > & labels ) : labels( labels ) {}
    3535
    3636void Statement::print( std::ostream & os, Indenter indent ) const {
     
    6060
    6161
    62 AsmStmt::AsmStmt( bool voltile, Expression *instruction, std::list<Expression *> output, std::list<Expression *> input, std::list<ConstantExpr *> clobber, std::list<Label> gotolabels ) : Statement(), voltile( voltile ), instruction( instruction ), output( output ), input( input ), clobber( clobber ), gotolabels( gotolabels ) {}
     62AsmStmt::AsmStmt( bool voltile, Expression *instruction, std::list<Expression *> output, std::list<Expression *> input, std::list<ConstantExpr *> clobber, std::vector< Label > gotolabels ) : Statement(), voltile( voltile ), instruction( instruction ), output( output ), input( input ), clobber( clobber ), gotolabels( gotolabels ) {}
    6363
    6464AsmStmt::AsmStmt( const AsmStmt & other ) : Statement( other ), voltile( other.voltile ), instruction( maybeClone( other.instruction ) ), gotolabels( other.gotolabels ) {
     
    223223}
    224224
    225 CaseStmt * CaseStmt::makeDefault( const std::list<Label> & labels, std::list<Statement *> stmts ) {
     225CaseStmt * CaseStmt::makeDefault( const std::vector< Label > & labels, std::list<Statement *> stmts ) {
    226226        CaseStmt * stmt = new CaseStmt( nullptr, stmts, true );
    227227        stmt->labels = labels;
     
    511511
    512512
    513 NullStmt::NullStmt( const std::list<Label> & labels ) : Statement( labels ) {
     513NullStmt::NullStmt( const std::vector< Label > & labels ) : Statement( labels ) {
    514514}
    515515
  • src/SynTree/Statement.h

    r70a1c3ae rbee0694  
    3535class Statement : public BaseSyntaxNode {
    3636  public:
    37         std::list<Label> labels;
    38 
    39         Statement( const std::list<Label> & labels = {} );
     37        std::vector< Label > labels;
     38
     39        Statement( const std::vector< Label > & labels = {} );
    4040        virtual ~Statement();
    4141
    42         std::list<Label> & get_labels() { return labels; }
    43         const std::list<Label> & get_labels() const { return labels; }
     42        std::vector< Label > & get_labels() { return labels; }
     43        const std::vector< Label > & get_labels() const { return labels; }
    4444
    4545        virtual Statement *clone() const override = 0;
     
    7070class NullStmt : public Statement {
    7171  public:
    72         NullStmt( const std::list<Label> & labels = {} );
     72        NullStmt( const std::vector< Label > & labels = {} );
    7373
    7474        virtual NullStmt *clone() const override { return new NullStmt( *this ); }
     
    101101        std::list<Expression *> output, input;
    102102        std::list<ConstantExpr *> clobber;
    103         std::list<Label> gotolabels;
    104 
    105         AsmStmt( bool voltile, Expression *instruction, std::list<Expression *> output, std::list<Expression *> input, std::list<ConstantExpr *> clobber, std::list<Label> gotolabels );
     103        std::vector< Label > gotolabels;
     104
     105        AsmStmt( bool voltile, Expression *instruction, std::list<Expression *> output, std::list<Expression *> input, std::list<ConstantExpr *> clobber, std::vector< Label > gotolabels );
    106106        AsmStmt( const AsmStmt &other );
    107107        virtual ~AsmStmt();
     
    117117        std::list<ConstantExpr *> & get_clobber() { return clobber; }
    118118        void set_clobber( const std::list<ConstantExpr *> &newValue ) { clobber = newValue; }
    119         std::list<Label> & get_gotolabels() { return gotolabels; }
    120         void set_gotolabels( const std::list<Label> &newValue ) { gotolabels = newValue; }
     119        std::vector< Label > & get_gotolabels() { return gotolabels; }
     120        void set_gotolabels( const std::vector< Label > &newValue ) { gotolabels = newValue; }
    121121
    122122        virtual AsmStmt * clone() const { return new AsmStmt( *this ); }
     
    196196        virtual ~CaseStmt();
    197197
    198         static CaseStmt * makeDefault( const std::list<Label> & labels = {}, std::list<Statement *> stmts = std::list<Statement *>() );
     198        static CaseStmt * makeDefault( const std::vector< Label > & labels = {}, std::list<Statement *> stmts = std::list<Statement *>() );
    199199
    200200        bool isDefault() const { return _isDefault; }
Note: See TracChangeset for help on using the changeset viewer.