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