Changes in / [1afda5a2:8e64cb4]


Ignore:
Files:
2 deleted
7 edited

Legend:

Unmodified
Added
Removed
  • src/AST/Pass.hpp

    r1afda5a2 r8e64cb4  
    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.
    7268// | result                - Either a method that takes no parameters or a field. If a method (or
    7369//                           callable field) get_result calls it, otherwise the value is returned.
  • src/AST/Pass.impl.hpp

    r1afda5a2 r8e64cb4  
    836836                        if ( enterScope ) {
    837837                                __pass::symtab::enter(core, 0);
     838                                __pass::scope::enter(core, 0);
    838839                        }
    839840                }, [this, leaveScope = !this->atFunctionTop]() {
    840841                        if ( leaveScope ) {
    841842                                __pass::symtab::leave(core, 0);
     843                                __pass::scope::leave(core, 0);
    842844                        }
    843845                });
  • src/GenPoly/Box.cc

    r1afda5a2 r8e64cb4  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Andrew Beach
    12 // Last Modified On : Mon Dec 19 16:36:00 2022
    13 // Update Count     : 348
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Fri Dec 13 23:40:34 2019
     13// Update Count     : 347
    1414//
    1515
     
    214214                /// sizeof expressions of polymorphic types with the proper variable,
    215215                /// and strips fields from generic struct declarations.
    216                 struct Pass3 final {
     216                struct Pass3 final : public BoxPass, public WithGuards {
     217                        template< typename DeclClass >
     218                        void handleDecl( DeclClass * decl, Type * type );
     219
    217220                        void premutate( ObjectDecl * objectDecl );
    218221                        void premutate( FunctionDecl * functionDecl );
     
    220223                        void premutate( StructDecl * structDecl );
    221224                        void premutate( UnionDecl * unionDecl );
     225                        void premutate( TypeDecl * typeDecl );
     226                        void premutate( PointerType * pointerType );
     227                        void premutate( FunctionType * funcType );
    222228                };
    223229        } // anonymous namespace
     
    18801886////////////////////////////////////////// Pass3 ////////////////////////////////////////////////////
    18811887
     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
    18821895                void Pass3::premutate( ObjectDecl * objectDecl ) {
    1883                         ScrubTyVars::scrubAll( objectDecl );
     1896                        handleDecl( objectDecl, objectDecl->type );
    18841897                }
    18851898
    18861899                void Pass3::premutate( FunctionDecl * functionDecl ) {
    1887                         ScrubTyVars::scrubAll( functionDecl );
     1900                        handleDecl( functionDecl, functionDecl->type );
    18881901                }
    18891902
    18901903                void Pass3::premutate( TypedefDecl * typedefDecl ) {
    1891                         ScrubTyVars::scrubAll( typedefDecl );
     1904                        handleDecl( typedefDecl, typedefDecl->base );
    18921905                }
    18931906
    18941907                /// Strips the members from a generic aggregate
    1895                 static void stripGenericMembers( AggregateDecl * decl ) {
     1908                void stripGenericMembers(AggregateDecl * decl) {
    18961909                        if ( ! decl->parameters.empty() ) decl->members.clear();
    18971910                }
     
    19031916                void Pass3::premutate( UnionDecl * unionDecl ) {
    19041917                        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 );
    19051932                }
    19061933        } // anonymous namespace
     
    19121939// compile-command: "make install" //
    19131940// End: //
     1941
  • src/Parser/module.mk

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

    r1afda5a2 r8e64cb4  
    5959#include "InitTweak/GenInit.h"              // for genInit
    6060#include "MakeLibCfa.h"                     // for makeLibCfa
    61 #include "Parser/RunParser.hpp"             // for buildList, dumpParseTree,...
     61#include "Parser/ParseNode.h"               // for DeclarationNode, buildList
     62#include "Parser/TypedefTable.h"            // for TypedefTable
    6263#include "ResolvExpr/CandidatePrinter.hpp"  // for printCandidates
    6364#include "ResolvExpr/Resolver.h"            // for resolve
     
    108109        Stats::Time::StopBlock();
    109110
     111LinkageSpec::Spec linkage = LinkageSpec::Cforall;
     112TypedefTable typedefTable;
     113DeclarationNode * parseTree = nullptr;                                  // program parse tree
     114
    110115static bool waiting_for_gdb = false;                                    // flag to set cfa-cpp to wait for gdb on start
    111116
     
    113118
    114119static void parse_cmdline( int argc, char * argv[] );
     120static void parse( FILE * input, LinkageSpec::Spec linkage, bool shouldExit = false );
    115121static void dump( list< Declaration * > & translationUnit, ostream & out = cout );
    116122static void dump( ast::TranslationUnit && transUnit, ostream & out = cout );
     
    295301
    296302                if ( parsep ) {
    297                         dumpParseTree( cout );
    298                         return EXIT_SUCCESS;
    299                 } // if
    300 
    301                 translationUnit = buildUnit();
     303                        parseTree->printList( cout );
     304                        delete parseTree;
     305                        return EXIT_SUCCESS;
     306                } // if
     307
     308                buildList( parseTree, translationUnit );
     309                delete parseTree;
     310                parseTree = nullptr;
    302311
    303312                if ( astp ) {
     
    739748} // parse_cmdline
    740749
     750static 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
    741766static bool notPrelude( Declaration * decl ) {
    742767        return ! LinkageSpec::isBuiltin( decl->get_linkage() );
  • tests/concurrent/pthread/.expect/bounded_buffer.txt

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

    r1afda5a2 r8e64cb4  
    6363
    6464void *producer( void *arg ) {
    65     Buffer(int) &buf = *(Buffer(int)*)arg;
    66         const int NoOfItems = prng(*active_thread(), 40);
     65        Buffer(int) &buf = *(Buffer(int)*)arg;
     66        const int NoOfItems = rand() % 40;
    6767        int item;
    6868        for ( int i = 1; i <= NoOfItems; i += 1 ) {                     // produce a bunch of items
    69                 item = prng(*active_thread(), 1, 101);                  // produce a random number
     69                item = rand() % 100 + 1;                                                // 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     set_seed( 1003 );
     103    srandom( 1003 );
    104104
    105105        processor p[5];
Note: See TracChangeset for help on using the changeset viewer.