Changes in / [8e64cb4:1afda5a2]


Ignore:
Files:
2 added
7 edited

Legend:

Unmodified
Added
Removed
  • src/AST/Pass.hpp

    r8e64cb4 r1afda5a2  
    6666//
    6767// Other Special Members:
     68// | beginScope            - A method with no parameters or return value, called each time the
     69//                           visitor enters a block.
     70// | endScope              - A method with no parameters or return value, called each time the
     71//                           visitor leaves a block.
    6872// | result                - Either a method that takes no parameters or a field. If a method (or
    6973//                           callable field) get_result calls it, otherwise the value is returned.
  • src/AST/Pass.impl.hpp

    r8e64cb4 r1afda5a2  
    836836                        if ( enterScope ) {
    837837                                __pass::symtab::enter(core, 0);
    838                                 __pass::scope::enter(core, 0);
    839838                        }
    840839                }, [this, leaveScope = !this->atFunctionTop]() {
    841840                        if ( leaveScope ) {
    842841                                __pass::symtab::leave(core, 0);
    843                                 __pass::scope::leave(core, 0);
    844842                        }
    845843                });
  • src/GenPoly/Box.cc

    r8e64cb4 r1afda5a2  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Dec 13 23:40:34 2019
    13 // Update Count     : 347
     11// Last Modified By : Andrew Beach
     12// Last Modified On : Mon Dec 19 16:36:00 2022
     13// Update Count     : 348
    1414//
    1515
     
    214214                /// sizeof expressions of polymorphic types with the proper variable,
    215215                /// and strips fields from generic struct declarations.
    216                 struct Pass3 final : public BoxPass, public WithGuards {
    217                         template< typename DeclClass >
    218                         void handleDecl( DeclClass * decl, Type * type );
    219 
     216                struct Pass3 final {
    220217                        void premutate( ObjectDecl * objectDecl );
    221218                        void premutate( FunctionDecl * functionDecl );
     
    223220                        void premutate( StructDecl * structDecl );
    224221                        void premutate( UnionDecl * unionDecl );
    225                         void premutate( TypeDecl * typeDecl );
    226                         void premutate( PointerType * pointerType );
    227                         void premutate( FunctionType * funcType );
    228222                };
    229223        } // anonymous namespace
     
    18861880////////////////////////////////////////// Pass3 ////////////////////////////////////////////////////
    18871881
    1888                 template< typename DeclClass >
    1889                 void Pass3::handleDecl( DeclClass * decl, Type * type ) {
    1890                         GuardScope( scopeTyVars );
    1891                         makeTyVarMap( type, scopeTyVars );
    1892                         ScrubTyVars::scrubAll( decl );
    1893                 }
    1894 
    18951882                void Pass3::premutate( ObjectDecl * objectDecl ) {
    1896                         handleDecl( objectDecl, objectDecl->type );
     1883                        ScrubTyVars::scrubAll( objectDecl );
    18971884                }
    18981885
    18991886                void Pass3::premutate( FunctionDecl * functionDecl ) {
    1900                         handleDecl( functionDecl, functionDecl->type );
     1887                        ScrubTyVars::scrubAll( functionDecl );
    19011888                }
    19021889
    19031890                void Pass3::premutate( TypedefDecl * typedefDecl ) {
    1904                         handleDecl( typedefDecl, typedefDecl->base );
     1891                        ScrubTyVars::scrubAll( typedefDecl );
    19051892                }
    19061893
    19071894                /// Strips the members from a generic aggregate
    1908                 void stripGenericMembers(AggregateDecl * decl) {
     1895                static void stripGenericMembers( AggregateDecl * decl ) {
    19091896                        if ( ! decl->parameters.empty() ) decl->members.clear();
    19101897                }
     
    19161903                void Pass3::premutate( UnionDecl * unionDecl ) {
    19171904                        stripGenericMembers( unionDecl );
    1918                 }
    1919 
    1920                 void Pass3::premutate( TypeDecl * typeDecl ) {
    1921                         addToTyVarMap( typeDecl, scopeTyVars );
    1922                 }
    1923 
    1924                 void Pass3::premutate( PointerType * pointerType ) {
    1925                         GuardScope( scopeTyVars );
    1926                         makeTyVarMap( pointerType, scopeTyVars );
    1927                 }
    1928 
    1929                 void Pass3::premutate( FunctionType * functionType ) {
    1930                         GuardScope( scopeTyVars );
    1931                         makeTyVarMap( functionType, scopeTyVars );
    19321905                }
    19331906        } // anonymous namespace
     
    19391912// compile-command: "make install" //
    19401913// End: //
    1941 
  • src/Parser/module.mk

    r8e64cb4 r1afda5a2  
    3030       Parser/parserutility.cc \
    3131       Parser/parserutility.h \
     32       Parser/RunParser.cpp \
     33       Parser/RunParser.hpp \
    3234       Parser/StatementNode.cc \
    3335       Parser/TypeData.cc \
  • src/main.cc

    r8e64cb4 r1afda5a2  
    5959#include "InitTweak/GenInit.h"              // for genInit
    6060#include "MakeLibCfa.h"                     // for makeLibCfa
    61 #include "Parser/ParseNode.h"               // for DeclarationNode, buildList
    62 #include "Parser/TypedefTable.h"            // for TypedefTable
     61#include "Parser/RunParser.hpp"             // for buildList, dumpParseTree,...
    6362#include "ResolvExpr/CandidatePrinter.hpp"  // for printCandidates
    6463#include "ResolvExpr/Resolver.h"            // for resolve
     
    109108        Stats::Time::StopBlock();
    110109
    111 LinkageSpec::Spec linkage = LinkageSpec::Cforall;
    112 TypedefTable typedefTable;
    113 DeclarationNode * parseTree = nullptr;                                  // program parse tree
    114 
    115110static bool waiting_for_gdb = false;                                    // flag to set cfa-cpp to wait for gdb on start
    116111
     
    118113
    119114static void parse_cmdline( int argc, char * argv[] );
    120 static void parse( FILE * input, LinkageSpec::Spec linkage, bool shouldExit = false );
    121115static void dump( list< Declaration * > & translationUnit, ostream & out = cout );
    122116static void dump( ast::TranslationUnit && transUnit, ostream & out = cout );
     
    301295
    302296                if ( parsep ) {
    303                         parseTree->printList( cout );
    304                         delete parseTree;
    305                         return EXIT_SUCCESS;
    306                 } // if
    307 
    308                 buildList( parseTree, translationUnit );
    309                 delete parseTree;
    310                 parseTree = nullptr;
     297                        dumpParseTree( cout );
     298                        return EXIT_SUCCESS;
     299                } // if
     300
     301                translationUnit = buildUnit();
    311302
    312303                if ( astp ) {
     
    748739} // parse_cmdline
    749740
    750 static void parse( FILE * input, LinkageSpec::Spec linkage, bool shouldExit ) {
    751         extern int yyparse( void );
    752         extern FILE * yyin;
    753         extern int yylineno;
    754 
    755         ::linkage = linkage;                                                            // set globals
    756         yyin = input;
    757         yylineno = 1;
    758         int parseStatus = yyparse();
    759 
    760         fclose( input );
    761         if ( shouldExit || parseStatus != 0 ) {
    762                 exit( parseStatus );
    763         } // if
    764 } // parse
    765 
    766741static bool notPrelude( Declaration * decl ) {
    767742        return ! LinkageSpec::isBuiltin( decl->get_linkage() );
  • tests/concurrent/pthread/.expect/bounded_buffer.txt

    r8e64cb4 r1afda5a2  
    1 producer total value is 23426
    2 consumer total value is 23426
     1producer total value is 24150
     2consumer total value is 24150
  • tests/concurrent/pthread/bounded_buffer.cfa

    r8e64cb4 r1afda5a2  
    6363
    6464void *producer( void *arg ) {
    65         Buffer(int) &buf = *(Buffer(int)*)arg;
    66         const int NoOfItems = rand() % 40;
     65    Buffer(int) &buf = *(Buffer(int)*)arg;
     66        const int NoOfItems = prng(*active_thread(), 40);
    6767        int item;
    6868        for ( int i = 1; i <= NoOfItems; i += 1 ) {                     // produce a bunch of items
    69                 item = rand() % 100 + 1;                                                // produce a random number
     69                item = prng(*active_thread(), 1, 101);                  // produce a random number
    7070                //sout | "Producer:" | pthread_self() | " value:" | item;
    7171                insert( buf,item );                                                             // insert element into queue
     
    101101    pthread_mutex_init(&consumer_cnt_lock, NULL);
    102102        // parallelism
    103     srandom( 1003 );
     103    set_seed( 1003 );
    104104
    105105        processor p[5];
Note: See TracChangeset for help on using the changeset viewer.