Changes in / [ef22ad6:2c60af75]
- Files:
-
- 16 edited
-
Jenkins/FullBuild (modified) (1 diff)
-
Jenkinsfile (modified) (3 diffs)
-
libcfa/src/Makefile.am (modified) (1 diff)
-
libcfa/src/Makefile.in (modified) (2 diffs)
-
src/ResolvExpr/AlternativeFinder.cc (modified) (1 diff)
-
src/SynTree/ApplicationExpr.cc (modified) (2 diffs)
-
src/SynTree/CommaExpr.cc (modified) (2 diffs)
-
src/SynTree/Expression.cc (modified) (10 diffs)
-
src/SynTree/Expression.h (modified) (14 diffs)
-
src/SynTree/TupleExpr.cc (modified) (3 diffs)
-
src/main.cc (modified) (8 diffs)
-
tests/Makefile.am (modified) (2 diffs)
-
tests/Makefile.in (modified) (2 diffs)
-
tests/pybin/settings.py (modified) (3 diffs)
-
tests/pybin/tools.py (modified) (3 diffs)
-
tests/test.py (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
Jenkins/FullBuild
ref22ad6 r2c60af75 132 132 133 133 <img src="https://cforall.uwaterloo.ca/jenkins/job/Cforall/job/master/plot/Compilation/getPlot?index=0" > 134 <img src="https://cforall.uwaterloo.ca/jenkins/job/Cforall/job/master/plot/Compilation/getPlot?index=1" >135 134 136 135 <p>- Logs ----------------------------------------------------------------</p> -
Jenkinsfile
ref22ad6 r2c60af75 197 197 if( Settings.Publish && !Settings.RunBenchmark ) { echo 'No results to publish!!!' } 198 198 199 def groupCompile = new PlotGroup('Compilation', ' duration (s) - lower is better', true)200 def groupConcurrency = new PlotGroup('Concurrency', ' duration (n) - lower is better', false)199 def groupCompile = new PlotGroup('Compilation', 'seconds', true) 200 def groupConcurrency = new PlotGroup('Concurrency', 'nanoseconds', false) 201 201 202 202 //Then publish the results 203 do_plot(Settings.RunBenchmark && Settings.Publish, 'compile' , groupCompile , false,'Compilation')204 do_plot(Settings.RunBenchmark && Settings.Publish, 'compile.diff' , groupCompile , true , 'Compilation (relative)')205 do_plot(Settings.RunBenchmark && Settings.Publish, 'ctxswitch' , groupConcurrency, false,'Context Switching')206 do_plot(Settings.RunBenchmark && Settings.Publish, 'ctxswitch.diff', groupConcurrency, true , 'Context Switching (relative)')207 do_plot(Settings.RunBenchmark && Settings.Publish, 'mutex' , groupConcurrency, false,'Mutual Exclusion')208 do_plot(Settings.RunBenchmark && Settings.Publish, 'mutex.diff' , groupConcurrency, true , 'Mutual Exclusion (relative)')209 do_plot(Settings.RunBenchmark && Settings.Publish, 'signal' , groupConcurrency, false,'Internal and External Scheduling')210 do_plot(Settings.RunBenchmark && Settings.Publish, 'signal.diff' , groupConcurrency, true , 'Internal and External Scheduling (relative)')203 do_plot(Settings.RunBenchmark && Settings.Publish, 'compile' , groupCompile , 'Compilation') 204 do_plot(Settings.RunBenchmark && Settings.Publish, 'compile.diff' , groupCompile , 'Compilation Speed-Up') 205 do_plot(Settings.RunBenchmark && Settings.Publish, 'ctxswitch' , groupConcurrency, 'Context Switching') 206 do_plot(Settings.RunBenchmark && Settings.Publish, 'ctxswitch.diff', groupConcurrency, 'Context Switching Speed-Up') 207 do_plot(Settings.RunBenchmark && Settings.Publish, 'mutex' , groupConcurrency, 'Mutual Exclusion') 208 do_plot(Settings.RunBenchmark && Settings.Publish, 'mutex.diff' , groupConcurrency, 'Mutual Exclusion Speed-Up') 209 do_plot(Settings.RunBenchmark && Settings.Publish, 'signal' , groupConcurrency, 'Internal and External Scheduling') 210 do_plot(Settings.RunBenchmark && Settings.Publish, 'signal.diff' , groupConcurrency, 'Internal and External Scheduling Speed-Up') 211 211 } 212 212 } … … 466 466 } 467 467 468 def do_plot(boolean new_data, String file, PlotGroup group, boolean relative,String title) {468 def do_plot(boolean new_data, String file, PlotGroup group, String title) { 469 469 470 470 if(new_data) { … … 489 489 exclZero: false, 490 490 keepRecords: false, 491 logarithmic: !relative &&group.log,491 logarithmic: group.log, 492 492 numBuilds: '120', 493 493 useDescr: true, -
libcfa/src/Makefile.am
ref22ad6 r2c60af75 26 26 VPATH += :../prelude 27 27 28 gdbwaittarget=""29 30 28 # AM_CFLAGS for all cfa source 31 29 # AM_CFAFLAGS for only cfa source 32 30 # use -no-include-stdhdr to prevent rebuild cycles 33 31 # The built sources must not depend on the installed headers 34 AM_CFAFLAGS = -quiet -in-tree -I$(srcdir)/stdhdr $(if $(findstring ${gdbwaittarget}, ${@}), -XCFA --gdb)@CONFIG_CFAFLAGS@32 AM_CFAFLAGS = -quiet -in-tree -I$(srcdir)/stdhdr @CONFIG_CFAFLAGS@ 35 33 AM_CFLAGS = -g -Wall -Wno-unused-function -fPIC @ARCH_FLAGS@ @CONFIG_CFLAGS@ 36 34 AM_CCASFLAGS = -g -Wall -Wno-unused-function @ARCH_FLAGS@ @CONFIG_CFLAGS@ -
libcfa/src/Makefile.in
ref22ad6 r2c60af75 435 435 am__v_UPP_1 = 436 436 lib_LTLIBRARIES = libcfa.la libcfathread.la 437 gdbwaittarget = ""438 437 439 438 # AM_CFLAGS for all cfa source … … 441 440 # use -no-include-stdhdr to prevent rebuild cycles 442 441 # The built sources must not depend on the installed headers 443 AM_CFAFLAGS = -quiet -in-tree -I$(srcdir)/stdhdr $(if $(findstring ${gdbwaittarget}, ${@}), -XCFA --gdb)@CONFIG_CFAFLAGS@442 AM_CFAFLAGS = -quiet -in-tree -I$(srcdir)/stdhdr @CONFIG_CFAFLAGS@ 444 443 AM_CFLAGS = -g -Wall -Wno-unused-function -fPIC @ARCH_FLAGS@ @CONFIG_CFLAGS@ 445 444 AM_CCASFLAGS = -g -Wall -Wno-unused-function @ARCH_FLAGS@ @CONFIG_CFLAGS@ -
src/ResolvExpr/AlternativeFinder.cc
ref22ad6 r2c60af75 1188 1188 assert( toType ); 1189 1189 toType = resolveTypeof( toType, indexer ); 1190 assert(!dynamic_cast<TypeofType *>(toType));1191 1190 SymTab::validateType( toType, &indexer ); 1192 1191 adjustExprType( toType, env, indexer ); -
src/SynTree/ApplicationExpr.cc
ref22ad6 r2c60af75 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Andrew Beach12 // Last Modified On : Mon Aug 12 14:28:00 201913 // Update Count : 511 // Last Modified By : Rob Schluntz 12 // Last Modified On : Tue Apr 26 12:41:06 2016 13 // Update Count : 4 14 14 // 15 15 … … 76 76 } 77 77 78 bool ApplicationExpr::get_lvalue() const {79 return result->get_lvalue();80 }81 82 78 void ApplicationExpr::print( std::ostream &os, Indenter indent ) const { 83 79 os << "Application of" << std::endl << indent+1; -
src/SynTree/CommaExpr.cc
ref22ad6 r2c60af75 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Andrew Beach12 // Last Modified On : Mon Arg 12 16:11:00201613 // Update Count : 211 // Last Modified By : Rob Schluntz 12 // Last Modified On : Mon May 02 15:19:44 2016 13 // Update Count : 1 14 14 // 15 15 … … 39 39 } 40 40 41 bool CommaExpr::get_lvalue() const {42 // xxx - as above, shouldn't be an lvalue but that information is used anyways.43 return result->get_lvalue();44 }45 46 41 void CommaExpr::print( std::ostream &os, Indenter indent ) const { 47 42 os << "Comma Expression:" << std::endl; -
src/SynTree/Expression.cc
ref22ad6 r2c60af75 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Andrew Beach 12 // Last Modified On : Thr Aug 15 13:43:00 201913 // Update Count : 6 412 // Last Modified On : Wed Aug 7 17:03:00 2019 13 // Update Count : 62 14 14 // 15 15 … … 64 64 65 65 bool Expression::get_lvalue() const { 66 assert( !result->get_lvalue() ); 67 return false; 66 return result->get_lvalue(); 68 67 } 69 68 … … 139 138 } 140 139 141 bool VariableExpr::get_lvalue() const {142 return result->get_lvalue();143 }144 145 140 VariableExpr * VariableExpr::functionPointer( FunctionDecl * func ) { 146 141 VariableExpr * funcExpr = new VariableExpr( func ); … … 274 269 CastExpr::~CastExpr() { 275 270 delete arg; 276 }277 278 bool CastExpr::get_lvalue() const {279 return result->get_lvalue();280 271 } 281 272 … … 389 380 // don't delete the member declaration, since it points somewhere else in the tree 390 381 delete aggregate; 391 }392 393 bool MemberExpr::get_lvalue() const {394 assert( result->get_lvalue() );395 return true;396 382 } 397 383 … … 446 432 } 447 433 448 bool UntypedExpr::get_lvalue() const {449 return result->get_lvalue();450 }451 434 452 435 void UntypedExpr::print( std::ostream & os, Indenter indent ) const { … … 507 490 delete arg2; 508 491 delete arg3; 509 }510 511 bool ConditionalExpr::get_lvalue() const {512 return result->get_lvalue();513 492 } 514 493 … … 569 548 } 570 549 571 bool ConstructorExpr::get_lvalue() const {572 return result->get_lvalue();573 }574 575 550 void ConstructorExpr::print( std::ostream & os, Indenter indent ) const { 576 551 os << "Constructor Expression: " << std::endl << indent+1; … … 590 565 CompoundLiteralExpr::~CompoundLiteralExpr() { 591 566 delete initializer; 592 }593 594 bool CompoundLiteralExpr::get_lvalue() const {595 assert( result->get_lvalue() );596 return true;597 567 } 598 568 … … 646 616 result = new VoidType( Type::Qualifiers() ); 647 617 } 648 }649 bool StmtExpr::get_lvalue() const {650 return result->get_lvalue();651 618 } 652 619 void StmtExpr::print( std::ostream & os, Indenter indent ) const { -
src/SynTree/Expression.h
ref22ad6 r2c60af75 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Andrew Beach 12 // Last Modified On : Thr Aug 15 13:46:00 201913 // Update Count : 5 412 // Last Modified On : Wed Aug 7 16:56:00 2019 13 // Update Count : 51 14 14 // 15 15 … … 71 71 const Type * get_result() const { return result; } 72 72 void set_result( Type * newValue ) { result = newValue; } 73 virtualbool get_lvalue() const;73 bool get_lvalue() const; 74 74 75 75 TypeSubstitution * get_env() const { return env; } … … 99 99 virtual ~ApplicationExpr(); 100 100 101 bool get_lvalue() const final;102 103 101 Expression * get_function() const { return function; } 104 102 void set_function( Expression * newValue ) { function = newValue; } … … 123 121 UntypedExpr( const UntypedExpr & other ); 124 122 virtual ~UntypedExpr(); 125 126 bool get_lvalue() const final;127 123 128 124 Expression * get_function() const { return function; } … … 213 209 virtual ~CastExpr(); 214 210 215 bool get_lvalue() const final;216 217 211 Expression * get_arg() const { return arg; } 218 212 void set_arg( Expression * newValue ) { arg = newValue; } … … 298 292 virtual ~MemberExpr(); 299 293 300 bool get_lvalue() const final;301 302 294 DeclarationWithType * get_member() const { return member; } 303 295 void set_member( DeclarationWithType * newValue ) { member = newValue; } … … 322 314 VariableExpr( const VariableExpr & other ); 323 315 virtual ~VariableExpr(); 324 325 bool get_lvalue() const final;326 316 327 317 DeclarationWithType * get_var() const { return var; } … … 511 501 virtual ~ConditionalExpr(); 512 502 513 bool get_lvalue() const final;514 515 503 Expression * get_arg1() const { return arg1; } 516 504 void set_arg1( Expression * newValue ) { arg1 = newValue; } … … 537 525 virtual ~CommaExpr(); 538 526 539 bool get_lvalue() const final;540 541 527 Expression * get_arg1() const { return arg1; } 542 528 void set_arg1( Expression * newValue ) { arg1 = newValue; } … … 625 611 ~ConstructorExpr(); 626 612 627 bool get_lvalue() const final;628 629 613 Expression * get_callExpr() const { return callExpr; } 630 614 void set_callExpr( Expression * newValue ) { callExpr = newValue; } … … 645 629 CompoundLiteralExpr( const CompoundLiteralExpr & other ); 646 630 virtual ~CompoundLiteralExpr(); 647 648 bool get_lvalue() const final;649 631 650 632 Initializer * get_initializer() const { return initializer; } … … 705 687 virtual ~TupleExpr(); 706 688 707 bool get_lvalue() const final;708 709 689 std::list<Expression*>& get_exprs() { return exprs; } 710 690 … … 725 705 TupleIndexExpr( const TupleIndexExpr & other ); 726 706 virtual ~TupleIndexExpr(); 727 728 bool get_lvalue() const final;729 707 730 708 Expression * get_tuple() const { return tuple; } … … 776 754 StmtExpr( const StmtExpr & other ); 777 755 virtual ~StmtExpr(); 778 779 bool get_lvalue() const final;780 756 781 757 CompoundStmt * get_statements() const { return statements; } -
src/SynTree/TupleExpr.cc
ref22ad6 r2c60af75 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Andrew Beach12 // Last Modified On : Wed Aug 14 14:34:00 201913 // Update Count : 511 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Mar 17 09:42:29 2017 13 // Update Count : 3 14 14 // 15 15 … … 57 57 } 58 58 59 bool TupleExpr::get_lvalue() const {60 return result->get_lvalue();61 }62 63 59 void TupleExpr::print( std::ostream &os, Indenter indent ) const { 64 60 os << "Tuple:" << std::endl; … … 80 76 TupleIndexExpr::~TupleIndexExpr() { 81 77 delete tuple; 82 }83 84 bool TupleIndexExpr::get_lvalue() const {85 assert( result->get_lvalue() );86 return true;87 78 } 88 79 -
src/main.cc
ref22ad6 r2c60af75 10 10 // Created On : Fri May 15 23:12:02 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Aug 23 06:50:08 201913 // Update Count : 60 712 // Last Modified On : Thu Aug 22 13:06:18 2019 13 // Update Count : 605 14 14 // 15 15 … … 17 17 #include <execinfo.h> // for backtrace, backtrace_symbols 18 18 #include <getopt.h> // for no_argument, optind, geto... 19 #include <signal.h> // for signal, SIGABRT, SIGSEGV 19 20 #include <cassert> // for assertf 20 21 #include <cstdio> // for fopen, FILE, fclose, stdin 21 22 #include <cstdlib> // for exit, free, abort, EXIT_F... 22 #include <csignal> // for signal, SIGABRT, SIGSEGV23 23 #include <cstring> // for index 24 24 #include <fstream> // for ofstream … … 96 96 DeclarationNode * parseTree = nullptr; // program parse tree 97 97 98 static bool waiting_for_gdb = false; // flag to set cfa-cpp to wait for gdb on start99 100 98 static std::string PreludeDirector = ""; 101 99 … … 169 167 } // sigAbortHandler 170 168 169 171 170 int main( int argc, char * argv[] ) { 172 171 FILE * input; // use FILE rather than istream because yyin is FILE … … 185 184 parse_cmdline( argc, argv ); // process command-line arguments 186 185 CodeGen::FixMain::setReplaceMain( !nomainp ); 187 188 if ( waiting_for_gdb ) {189 std::cerr << "Waiting for gdb" << std::endl;190 std::cerr << "run :" << std::endl;191 std::cerr << " gdb attach " << getpid() << std::endl;192 raise(SIGSTOP);193 } // if194 186 195 187 try { … … 453 445 { "statistics", required_argument, nullptr, 'S' }, 454 446 { "tree", no_argument, nullptr, 't' }, 455 { "gdb", no_argument, nullptr, 'g' },456 447 { "", no_argument, nullptr, 0 }, // -w 457 448 { "", no_argument, nullptr, 0 }, // -W … … 471 462 "<directory> prelude directory for debug/nodebug", // no flag 472 463 "<option-list> enable profiling information:\n counters,heap,time,all,none", // -S 473 "building cfa standard lib", // -t 474 "wait for gdb to attach", // -g 464 "build in tree", // -t 475 465 "", // -w 476 466 "", // -W … … 582 572 Stats::parse_params( optarg ); 583 573 break; 584 case 't': // build ing cfa stdlib574 case 't': // build in tree 585 575 treep = true; 586 break;587 case 'g': // wait for gdb588 waiting_for_gdb = true;589 576 break; 590 577 case 'w': // suppress all warnings, hidden -
tests/Makefile.am
ref22ad6 r2c60af75 22 22 debug=yes 23 23 installed=no 24 archiveerrors=25 24 26 25 INSTALL_FLAGS=-in-tree … … 57 56 #---------------------------------------------------------------------------------------------------------------- 58 57 all-local : 59 @+${TEST_PY} --debug=${debug} --install=${installed} --archive-errors=${archiveerrors}${concurrent} ${timeouts} ${quick_test}58 @+${TEST_PY} --debug=${debug} --install=${installed} ${concurrent} ${timeouts} ${quick_test} 60 59 61 60 all-tests : 62 @+${TEST_PY} --debug=${debug} --install=${installed} --archive-errors=${archiveerrors}${concurrent} ${timeouts} --all # '@' => do not echo command (SILENT), '+' => allows recursive make from within python program61 @+${TEST_PY} --debug=${debug} --install=${installed} ${concurrent} ${timeouts} --all # '@' => do not echo command (SILENT), '+' => allows recursive make from within python program 63 62 64 63 clean-local : -
tests/Makefile.in
ref22ad6 r2c60af75 377 377 debug = yes 378 378 installed = no 379 archiveerrors =380 379 INSTALL_FLAGS = -in-tree 381 380 DEBUG_FLAGS = -debug -O0 … … 771 770 #---------------------------------------------------------------------------------------------------------------- 772 771 all-local : 773 @+${TEST_PY} --debug=${debug} --install=${installed} --archive-errors=${archiveerrors}${concurrent} ${timeouts} ${quick_test}772 @+${TEST_PY} --debug=${debug} --install=${installed} ${concurrent} ${timeouts} ${quick_test} 774 773 775 774 all-tests : 776 @+${TEST_PY} --debug=${debug} --install=${installed} --archive-errors=${archiveerrors}${concurrent} ${timeouts} --all # '@' => do not echo command (SILENT), '+' => allows recursive make from within python program775 @+${TEST_PY} --debug=${debug} --install=${installed} ${concurrent} ${timeouts} --all # '@' => do not echo command (SILENT), '+' => allows recursive make from within python program 777 776 778 777 clean-local : -
tests/pybin/settings.py
ref22ad6 r2c60af75 4 4 from . import tools 5 5 6 global original_path7 8 6 try : 9 original_path = os.getcwd()10 7 testpath = os.path.dirname(os.path.abspath(os.path.join(os.getcwd(), sys.argv[0]))) 11 8 sys.path.append(testpath) … … 116 113 global timeout 117 114 global output_width 118 global archive119 115 120 116 dry_run = options.dry_run … … 126 122 timeout = Timeouts(options.timeout, options.global_timeout) 127 123 output_width = 24 128 archive = os.path.abspath(os.path.join(original_path, options.archive_errors)) if options.archive_errors else None129 124 130 125 -
tests/pybin/tools.py
ref22ad6 r2c60af75 2 2 import argparse 3 3 import contextlib 4 import datetime5 4 import fileinput 6 5 import multiprocessing … … 274 273 ################################################################################ 275 274 276 def pretty_now():277 ts = time.time()278 print(ts, file=sys.stderr)279 return datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d_%H:%M:%S')280 281 275 # check if arguments is yes or no 282 276 def yes_no(string): … … 310 304 return sh('gdb', '-n', path, core, '-batch', '-x', cmd, output=subprocess.PIPE) 311 305 312 def core_archive(dst, name, exe):313 # Get the files to copy314 core = os.path.join(os.getcwd(), "core" )315 316 # Uncomment if we want timestamps on coredumps317 # dst = os.path.join(dst, "%s_%s" % (name, pretty_now()))318 319 # make a directory for this test320 mkdir(os.path.join(dst, "dir"))321 322 # moves the files323 mv( core, os.path.join(dst, "core" ) )324 mv( exe , os.path.join(dst, name ) )325 326 # return explanatory test327 return "Archiving %s (executable and core) to %s" % (os.path.relpath(exe, settings.BUILDDIR), os.path.relpath(dst, settings.original_path))328 329 306 class Timed: 330 307 def __enter__(self): -
tests/test.py
ref22ad6 r2c60af75 91 91 parser.add_argument('--all', help='Run all test available', action='store_true') 92 92 parser.add_argument('--regenerate-expected', help='Regenerate the .expect by running the specified tets, can be used with --all option', action='store_true') 93 parser.add_argument('--archive-errors', help='If called with a valid path, on test crashes the test script will copy the core dump and the executable to the specified path.', type=str, default='')94 93 parser.add_argument('-j', '--jobs', help='Number of tests to run simultaneously', type=int) 95 94 parser.add_argument('--list-comp', help='List all valide arguments', action='store_true') … … 180 179 error = error + info if error else info 181 180 182 if settings.archive:183 error = error + '\n' + core_archive(settings.archive, test.target(), exe_file)184 185 181 186 182 … … 299 295 # users may want to simply list the tests 300 296 if options.list_comp : 301 print("-h --help --debug --dry-run --list --arch --all --regenerate-expected -- archive-errors --install --timeout --global-timeout -j --jobs ", end='')297 print("-h --help --debug --dry-run --list --arch --all --regenerate-expected --install --timeout --global-timeout -j --jobs ", end='') 302 298 print(" ".join(map(lambda t: "%s" % (t.target()), tests))) 303 299
Note:
See TracChangeset
for help on using the changeset viewer.