Changes in / [8e64cb4:1afda5a2]
- Files:
-
- 2 added
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
src/AST/Pass.hpp
r8e64cb4 r1afda5a2 66 66 // 67 67 // 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. 68 72 // | result - Either a method that takes no parameters or a field. If a method (or 69 73 // callable field) get_result calls it, otherwise the value is returned. -
src/AST/Pass.impl.hpp
r8e64cb4 r1afda5a2 836 836 if ( enterScope ) { 837 837 __pass::symtab::enter(core, 0); 838 __pass::scope::enter(core, 0);839 838 } 840 839 }, [this, leaveScope = !this->atFunctionTop]() { 841 840 if ( leaveScope ) { 842 841 __pass::symtab::leave(core, 0); 843 __pass::scope::leave(core, 0);844 842 } 845 843 }); -
src/GenPoly/Box.cc
r8e64cb4 r1afda5a2 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Fri Dec 13 23:40:34 201913 // Update Count : 34 711 // Last Modified By : Andrew Beach 12 // Last Modified On : Mon Dec 19 16:36:00 2022 13 // Update Count : 348 14 14 // 15 15 … … 214 214 /// sizeof expressions of polymorphic types with the proper variable, 215 215 /// 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 { 220 217 void premutate( ObjectDecl * objectDecl ); 221 218 void premutate( FunctionDecl * functionDecl ); … … 223 220 void premutate( StructDecl * structDecl ); 224 221 void premutate( UnionDecl * unionDecl ); 225 void premutate( TypeDecl * typeDecl );226 void premutate( PointerType * pointerType );227 void premutate( FunctionType * funcType );228 222 }; 229 223 } // anonymous namespace … … 1886 1880 ////////////////////////////////////////// Pass3 //////////////////////////////////////////////////// 1887 1881 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 1895 1882 void Pass3::premutate( ObjectDecl * objectDecl ) { 1896 handleDecl( objectDecl, objectDecl->type);1883 ScrubTyVars::scrubAll( objectDecl ); 1897 1884 } 1898 1885 1899 1886 void Pass3::premutate( FunctionDecl * functionDecl ) { 1900 handleDecl( functionDecl, functionDecl->type);1887 ScrubTyVars::scrubAll( functionDecl ); 1901 1888 } 1902 1889 1903 1890 void Pass3::premutate( TypedefDecl * typedefDecl ) { 1904 handleDecl( typedefDecl, typedefDecl->base);1891 ScrubTyVars::scrubAll( typedefDecl ); 1905 1892 } 1906 1893 1907 1894 /// Strips the members from a generic aggregate 1908 void stripGenericMembers(AggregateDecl * decl) {1895 static void stripGenericMembers( AggregateDecl * decl ) { 1909 1896 if ( ! decl->parameters.empty() ) decl->members.clear(); 1910 1897 } … … 1916 1903 void Pass3::premutate( UnionDecl * unionDecl ) { 1917 1904 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 );1932 1905 } 1933 1906 } // anonymous namespace … … 1939 1912 // compile-command: "make install" // 1940 1913 // End: // 1941 -
src/Parser/module.mk
r8e64cb4 r1afda5a2 30 30 Parser/parserutility.cc \ 31 31 Parser/parserutility.h \ 32 Parser/RunParser.cpp \ 33 Parser/RunParser.hpp \ 32 34 Parser/StatementNode.cc \ 33 35 Parser/TypeData.cc \ -
src/main.cc
r8e64cb4 r1afda5a2 59 59 #include "InitTweak/GenInit.h" // for genInit 60 60 #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,... 63 62 #include "ResolvExpr/CandidatePrinter.hpp" // for printCandidates 64 63 #include "ResolvExpr/Resolver.h" // for resolve … … 109 108 Stats::Time::StopBlock(); 110 109 111 LinkageSpec::Spec linkage = LinkageSpec::Cforall;112 TypedefTable typedefTable;113 DeclarationNode * parseTree = nullptr; // program parse tree114 115 110 static bool waiting_for_gdb = false; // flag to set cfa-cpp to wait for gdb on start 116 111 … … 118 113 119 114 static void parse_cmdline( int argc, char * argv[] ); 120 static void parse( FILE * input, LinkageSpec::Spec linkage, bool shouldExit = false );121 115 static void dump( list< Declaration * > & translationUnit, ostream & out = cout ); 122 116 static void dump( ast::TranslationUnit && transUnit, ostream & out = cout ); … … 301 295 302 296 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(); 311 302 312 303 if ( astp ) { … … 748 739 } // parse_cmdline 749 740 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 globals756 yyin = input;757 yylineno = 1;758 int parseStatus = yyparse();759 760 fclose( input );761 if ( shouldExit || parseStatus != 0 ) {762 exit( parseStatus );763 } // if764 } // parse765 766 741 static bool notPrelude( Declaration * decl ) { 767 742 return ! LinkageSpec::isBuiltin( decl->get_linkage() ); -
tests/concurrent/pthread/.expect/bounded_buffer.txt
r8e64cb4 r1afda5a2 1 producer total value is 2 34262 consumer total value is 2 34261 producer total value is 24150 2 consumer total value is 24150 -
tests/concurrent/pthread/bounded_buffer.cfa
r8e64cb4 r1afda5a2 63 63 64 64 void *producer( void *arg ) { 65 66 const int NoOfItems = rand() % 40;65 Buffer(int) &buf = *(Buffer(int)*)arg; 66 const int NoOfItems = prng(*active_thread(), 40); 67 67 int item; 68 68 for ( int i = 1; i <= NoOfItems; i += 1 ) { // produce a bunch of items 69 item = rand() % 100 + 1;// produce a random number69 item = prng(*active_thread(), 1, 101); // produce a random number 70 70 //sout | "Producer:" | pthread_self() | " value:" | item; 71 71 insert( buf,item ); // insert element into queue … … 101 101 pthread_mutex_init(&consumer_cnt_lock, NULL); 102 102 // parallelism 103 s random( 1003 );103 set_seed( 1003 ); 104 104 105 105 processor p[5];
Note: See TracChangeset
for help on using the changeset viewer.