Changeset b2b039d


Ignore:
Timestamp:
Jun 21, 2016, 12:11:40 PM (8 years ago)
Author:
Aaron Moss <a3moss@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, gc_noraii, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
Children:
6bc4734
Parents:
f6d4204 (diff), 7ba3a25 (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.
Message:

Merge branch 'master' of plg.uwaterloo.ca:software/cfa/cfa-cc

Files:
23 added
23 edited
1 moved

Legend:

Unmodified
Added
Removed
  • Jenkinsfile

    rf6d4204 rb2b039d  
    55//===========================================================================================================
    66//Compilation script is done here but environnement set-up and error handling is done in main loop
    7 def cfa_build() {
     7def cfa_build(boolean full_build) {
    88        build_stage 'Checkout'
    99                def install_dir = pwd tmp: true
    1010                //checkout the source code and clean the repo
    1111                checkout scm
     12
     13                //Clean all temporary files to make sure no artifacts of the previous build remain
    1214                sh 'git clean -fdqx'
     15
     16                //Reset the git repo so no local changes persist
    1317                sh 'git reset --hard'
    1418
     
    2630        build_stage 'Test'
    2731
    28                 //Run the tests from the example directory
     32                //Run the tests from the tests directory
    2933                dir ('src/tests') {
    30                         sh './runTests.sh'
     34                        if (full_build) {
     35                                sh 'python test.py --all'
     36                        }
     37                        else {
     38                                sh './runTests.sh'
     39                        }
    3140                }
    3241
     
    3544                //do a maintainer-clean to make sure we need to remake from scratch
    3645                sh 'make maintainer-clean > /dev/null'
     46}
     47
     48def make_doc() {
     49        def err = null
     50
     51        try {
     52                sh 'make clean > /dev/null'
     53                sh 'make > /dev/null 2>&1'
     54        }
     55
     56        catch (Exception caughtError) {
     57                //rethrow error later
     58                err = caughtError
     59
     60                sh 'cat *.log'
     61        }
     62
     63        finally {
     64                /* Must re-throw exception to propagate error */
     65                if (err) {
     66                        throw err
     67                }
     68        }
     69}
     70
     71def doc_build() {
     72        stage 'Documentation'
     73
     74                status_prefix = 'Documentation'
     75
     76                dir ('doc/user') {
     77                        make_doc()
     78                }
     79
     80                dir ('doc/refrat') {
     81                        make_doc()
     82                }
    3783}
    3884
     
    117163        try {
    118164                //Prevent the build from exceeding 30 minutes
    119                 timeout(30) {
     165                timeout(60) {
    120166
    121167                        //Wrap build to add timestamp to command line
     
    140186                                //Compile using gcc-4.9
    141187                                currentCC = new CC_Desc('gcc-4.9', 'g++-4.9', 'gcc-4.9')
    142                                 cfa_build()
     188                                cfa_build(doPromoteBuild2DoLang)
    143189
    144190                                //Compile using gcc-5
    145191                                currentCC = new CC_Desc('gcc-5', 'g++-5', 'gcc-5')
    146                                 cfa_build()
     192                                cfa_build(doPromoteBuild2DoLang)
    147193
    148194                                //Compile using gcc-4.9
    149195                                currentCC = new CC_Desc('gcc-6', 'g++-6', 'gcc-6')
    150                                 cfa_build()
     196                                cfa_build(doPromoteBuild2DoLang)
     197
     198                                //Compile latex documentation
     199                                doc_build()
    151200
    152201                                if( doPromoteBuild2DoLang ) {
     
    185234//===========================================================================================================
    186235def notify_result(boolean promote, Exception err, String status, boolean log) {
     236        echo 'Build completed, sending result notification'
    187237        if(promote)     {
    188238                if( err ) {
     
    224274        def project_name = (env.JOB_NAME =~ /(.+)\/.+/)[0][1].toLowerCase()
    225275
    226         sh "git rev-list --format=short ${gitRefOldValue}...${gitRefNewValue} > GIT_LOG"
    227         def gitLog = readFile('GIT_LOG')
    228 
    229         sh "git diff --stat ${gitRefNewValue} ${gitRefOldValue} > GIT_DIFF"
    230         def gitDiff = readFile('GIT_DIFF')
     276        def gitLog = 'Error retrieving git logs'
     277        def gitDiff = 'Error retrieving git diff'
     278
     279        try {
     280
     281                sh "git rev-list --format=short ${gitRefOldValue}...${gitRefNewValue} > GIT_LOG"
     282                gitLog = readFile('GIT_LOG')
     283
     284                sh "git diff --stat ${gitRefNewValue} ${gitRefOldValue} > GIT_DIFF"
     285                gitDiff = readFile('GIT_DIFF')
     286        }
     287        catch (Exception error) {}
    231288
    232289        def email_subject = "[${project_name} git][BUILD# ${env.BUILD_NUMBER} - ${status}] - branch ${env.BRANCH_NAME}"
  • doc/refrat/Makefile

    rf6d4204 rb2b039d  
    22
    33TeXLIB = .:../LaTeXmacros:../LaTeXmacros/listings:../LaTeXmacros/enumitem:../bibliography/:
    4 LaTeX  = TEXINPUTS=${TeXLIB} && export TEXINPUTS && latex
     4LaTeX  = TEXINPUTS=${TeXLIB} && export TEXINPUTS && latex -halt-on-error
    55BibTeX = BIBINPUTS=${TeXLIB} && export BIBINPUTS && bibtex
    66
  • doc/user/Makefile

    rf6d4204 rb2b039d  
    22
    33TeXLIB = .:../LaTeXmacros:../LaTeXmacros/listings:../LaTeXmacros/enumitem:../bibliography/:
    4 LaTeX  = TEXINPUTS=${TeXLIB} && export TEXINPUTS && latex
     4LaTeX  = TEXINPUTS=${TeXLIB} && export TEXINPUTS && latex -halt-on-error
    55BibTeX = BIBINPUTS=${TeXLIB} && export BIBINPUTS && bibtex
    66
  • src/tests/.expect/abs.txt

    rf6d4204 rb2b039d  
    1 /usr/local/bin/cfa -g -Wall -Wno-unused-function     abs.c   -o abs
    2 CFA Version 1.0.0 (debug)
    31char                    ¿       abs A
    42signed int              -65     abs 65
  • src/tests/.expect/minmax.txt

    rf6d4204 rb2b039d  
     1char                    z a     min a
     2signed int              4 3     min 3
     3unsigned int            4 3     min 3
     4signed long int         4 3     min 3
     5unsigned long int       4 3     min 3
     6signed long long int    4 3     min 3
     7unsigned long long int  4 3     min 3
     8float                   4 3.1   min 3.1
     9double                  4 3.1   min 3.1
     10long double             4 3.1   min 3.1
     11
     12char                    z a     max z
     13signed int              4 3     max 4
     14unsigned int            4 3     max 4
     15signed long int         4 3     max 4
     16unsigned long int       4 3     max 4
     17signed long long int    4 3     max 4
     18unsigned long long int  4 3     max 4
     19float                   4 3.1   max 4
     20double                  4 3.1   max 4
     21long double             4 3.1   max 4
  • src/tests/Cast.c

    rf6d4204 rb2b039d  
    99        (int)f;
    1010        (void(*)())f;
    11         ([long, long double, *[]()])([f, f, f]);
     11//      ([long, long double, *[]()])([f, f, f]);
    1212}
    1313
  • src/tests/CommentMisc.c

    rf6d4204 rb2b039d  
    1 /* single line */
    2 // single line
    3 
    4 // single line containing */
    5 // single line containing /*
    6 // single line containing /* */
    7 
    8 /* 1st */ int i;
    9 int i; /* 2nd */
    10 /* 1st */ int i; /* 2nd */
    11 /* 1st */ /* 2nd */
    12 
    13 /* 1st
    14    2nd */ int i;
    15 
    16 /*
    17 */
    18 
    19 /*
    20 
    21 */
    22 
    23 /*
    24   1st
    25 */
    26 
    27 /*
    28   1st
    29   2nd
    30 */
    31 
    32 // ignore preprocessor directives
    33 
    34 #line 2
    35  #
    36  #include <fred>
    37         #define mary abc
    38 
    391// alternative ANSI99 brackets
    402
  • src/tests/Constant0-1.c

    rf6d4204 rb2b039d  
    1 //Constant test declaration
    2 // Cforall extension
     1// Constant test declaration
    32
    43// value
     
    65int 0;
    76const int 0;
    8 static const int 0;
    97int 1;
    108const int 1;
    11 static const int 1;
    12 int 0, 1;
    13 const int 0, 1;
     9struct { int i; } 0;
     10const struct { int i; } 1;
     11
     12#ifdef DUPS
     13
     14int 0;
     15const int 0;
     16int 1;
     17const int 1;
    1418int (0), (1);
    1519int ((0)), ((1));
    16 static const int 0, 1;
     20const int 0, 1;
     21const int (0), (1);
    1722struct { int i; } 0;
    1823const struct { int i; } 1;
    19 static const struct { int i; } 1;
     24
     25#endif // DUPS
     26
     27#ifndef NEWDECL
    2028
    2129// pointer
     30
     31int *0, *1;
     32int * const (0), * const 1;
     33struct { int i; } *0;
     34const struct { int i; } *0;
     35int (*(* const x)), **0;
     36
     37#ifdef DUPS
    2238
    2339int *0, *1;
     
    2844int (* const 0), (* const 1);
    2945int ((* const 0)), ((* const 1));
     46int (*(* const x)), *(*0);
     47int (*(* const x)), (*(*0));
    3048struct { int i; } *0;
     49const struct { int i; } *0;
     50int (*(* const x)), **0;
     51
     52#endif // DUPS
     53
     54#else
    3155
    3256// Cforall style
     
    3458* int x, 0;
    3559const * int x, 0;
    36 static const * int x, 0;
    3760* struct { int i; } 0;
    3861const * struct { int i; } 0;
    39 static const * struct { int i; } 0;
    40 static * int x, 0;
    41 static const * int x, 0;
    4262const * * int x, 0;
    4363
     64#ifdef DUPS
     65
     66* int x, 0;
     67const * int x, 0;
     68
     69#endif // DUPS
     70
     71#endif // NEWDECL
     72
    4473int main() {
     74#ifndef NEWDECL
    4575    int 1, * 0;
     76#else
    4677    * int x, 0;
     78#endif // NEWDECL
    4779}
  • src/tests/Context.c

    rf6d4204 rb2b039d  
    1 //cforall context declaration
    2 context has_q( otype T ) {
     1// trait declaration
     2
     3trait has_q( otype T ) {
    34        T q( T );
    45};
    56
    67forall( otype z | has_q( z ) ) void f() {
    7         context has_r( otype T, otype U ) {
     8        trait has_r( otype T, otype U ) {
    89                T r( T, T (T,U) );
    910        };
  • src/tests/Exception.c

    rf6d4204 rb2b039d  
    1010    try {
    1111        x/4;
    12     } catch( int) {
     12    } catch( int ) {
    1313    } catch( int x ) {
    1414    } catch( struct { int i; } ) {
  • src/tests/Expression.c

    rf6d4204 rb2b039d  
    1 int fred() {
    2     struct s { int i; } *p;
    3     int i;
     1int main() {
     2    struct s { int i; } x, *p = &x;
     3    int i = 3;
    44
    5     // order of evaluation (GCC is different)
    6 /*
    7     i = sizeof( (int) {3} );
    8     i = sizeof (int) {3};
    9 */
    105    // operators
    116
     
    4237    i||i;
    4338    p->i;
    44     i+=i;
    45     i-=i;
    4639    i*=i;
    4740    i/=i;
    4841    i%=i;
     42    i+=i;
     43    i-=i;
    4944    i&=i;
    5045    i|=i;
     
    5449
    5550    i?i:i;
    56 
    57     // cast
    58 /*
    59     double d;
    60     int *ip;
    61     (int *) i;
    62     (* int) i;
    63     ([char, int *])[d, d];
    64     [i,ip,ip] = ([int, * int, int *])[1,(void *)2,(void *)3];
    65     [i,ip,ip] = ([int, * int, int *])([1,(void *)2,(void *)3]);
    66 */
    67 }
    68 
    69 //Dummy main
    70 int main(int argc, char const *argv[])
    71 {
    72         return 0;
    73 }
     51} // main
  • src/tests/Forall.c

    rf6d4204 rb2b039d  
    1010        void f( int );
    1111        void h( void (*p)(void) );
    12  
     12
    1313        int x;
    1414        void (*y)(void);
    1515        char z;
    1616        float w;
    17  
     17
    1818        f( x );
    1919        f( y );
     
    2626        forall( otype T ) void f( T, T );
    2727        forall( otype T, otype U ) void f( T, U );
    28  
     28
    2929        int x;
    3030        float y;
    3131        int *z;
    3232        float *w;
    33  
     33
    3434        f( x, y );
    3535        f( z, w );
     
    4646}
    4747
    48 context sumable( otype T ) {
     48trait sumable( otype T ) {
    4949        const T 0;
    5050        T ?+?(T, T);
  • src/tests/Makefile.am

    rf6d4204 rb2b039d  
    1111## Created On       : Sun May 31 09:08:15 2015
    1212## Last Modified By : Peter A. Buhr
    13 ## Last Modified On : Mon Jan 25 22:31:42 2016
    14 ## Update Count     : 25
     13## Last Modified On : Mon Jun 20 14:30:52 2016
     14## Update Count     : 33
    1515###############################################################################
    1616
     
    2323vector_test_SOURCES = vector/vector_int.c vector/array.c vector/vector_test.c
    2424avl_test_SOURCES = avltree/avl_test.c avltree/avl0.c avltree/avl1.c avltree/avl2.c avltree/avl3.c avltree/avl4.c avltree/avl-private.c
     25
     26Constant0-1DP : Constant0-1.c
     27        ${CC} ${CFLAGS} -DDUPS ${<} -o ${@}
     28
     29Constant0-1ND : Constant0-1.c
     30        ${CC} ${CFLAGS} -DNEWDECL ${<} -o ${@}
     31
     32Constant0-1NDDP : Constant0-1.c
     33        ${CC} ${CFLAGS} -DNEWDECL -DDUPS ${<} -o ${@}
  • src/tests/Makefile.in

    rf6d4204 rb2b039d  
    621621
    622622
     623Constant0-1DP : Constant0-1.c
     624        ${CC} ${CFLAGS} -DDUPS ${<} -o ${@}
     625
     626Constant0-1ND : Constant0-1.c
     627        ${CC} ${CFLAGS} -DNEWDECL ${<} -o ${@}
     628
     629Constant0-1NDDP : Constant0-1.c
     630        ${CC} ${CFLAGS} -DNEWDECL -DDUPS ${<} -o ${@}
     631
    623632# Tell versions [3.59,3.63) of GNU make to not export all variables.
    624633# Otherwise a system limit (for SysV at least) may be exceeded.
  • src/tests/Operators.c

    rf6d4204 rb2b039d  
    1 int ?*?( int, int );
     1int ?*?( int a, int b ) {
     2        return 0;
     3}
    24
    35int ?()( int number1, int number2 ) {
     
    57}
    68
    7 int ?+?( int, int );
     9int ?+?( int a, int b ) {
     10        return 0;
     11}
    812
    9 int ?=?( int *, int );
     13int ?=?( int *a, int b ) {
     14        return 0;
     15}
    1016struct accumulator {
    1117        int total;
    1218};
    1319
    14 char ?()( struct accumulator a, char number1, char number2 );
     20char ?()( struct accumulator a, char number1, char number2 ) {
     21        return 'a';
     22}
    1523
    1624void f( void ) {
     
    2331}
    2432
     33int main(int argc, char const *argv[]) {
     34        /* code */
     35        return 0;
     36}
     37
    2538// Local Variables: //
    2639// tab-width: 4 //
  • src/tests/Scope.c

    rf6d4204 rb2b039d  
    1515y p;
    1616
    17 context has_u( otype z ) {
     17trait has_u( otype z ) {
    1818        z u(z);
    1919};
  • src/tests/Subrange.c

    rf6d4204 rb2b039d  
    11// A small context defining the notion of an ordered otype.  (The standard
    22// library should probably contain a context for this purpose.)
    3 context ordered(otype T) {
     3trait ordered(otype T) {
    44    int ?<?(T, T), ?<=?(T, T);
    55};
  • src/tests/Switch.c

    rf6d4204 rb2b039d  
    1 int fred() {
     1int main(int argc, char const *argv[]) {
    22    int i;
    33    switch ( i ) case 3 : i = 1;
  • src/tests/Typedef.c

    rf6d4204 rb2b039d  
    1818a c;
    1919
    20 typedef otypeof(3) x, y;  // GCC
     20typedef typeof(3) x, y;  // GCC
    2121
    2222x p;
     
    2424
    2525int main() {
    26     typedef otypeof(3) z, p;
     26    typedef typeof(3) z, p;
    2727    z w;
    2828    p x;
  • src/tests/Typeof.c

    rf6d4204 rb2b039d  
    11int main() {
    22    int *v1;
    3     otypeof(v1) v2;
    4     otypeof(*v1) v3[4];
     3    typeof(v1) v2;
     4    typeof(*v1) v3[4];
    55    char *v4[4];
    6     otypeof(otypeof(char *)[4]) v5;
    7     otypeof (int *) v6;
    8     otypeof( int ( int, int p ) ) *v7;
    9     otypeof( [int] ( int, int p ) ) *v8;
     6    typeof(typeof(char *)[4]) v5;
     7    typeof (int *) v6;
     8    typeof( int ( int, int p ) ) *v7;
     9    typeof( [int] ( int, int p ) ) *v8;
    1010}
  • src/tests/limits.c

    rf6d4204 rb2b039d  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // limits.c -- 
     7// limits.c --
    88//
    99// Author           : Peter A. Buhr
     
    1212// Last Modified On : Tue May 10 20:45:28 2016
    1313// Update Count     : 1
    14 // 
     14//
    1515
    1616#include <limits>
     
    109109long _Complex _1_sqrt_2 = _1_SQRT_2;
    110110
     111int main(int argc, char const *argv[]) {
     112        //DUMMY
     113        return 0;
     114}
     115
    111116// Local Variables: //
    112117// tab-width: 4 //
  • src/tests/runTests.sh

    rf6d4204 rb2b039d  
    6969python test.py ${tests}
    7070
    71 ret_val=0
     71ret_val=$?
    7272exit $((ret_val))
  • src/tests/test.py

    rf6d4204 rb2b039d  
    33
    44from os import listdir
    5 from os.path import isfile, join
     5from os.path import isfile, join, splitext
    66from subprocess import Popen, PIPE, STDOUT
    77
     
    1313################################################################################
    1414def listTests():
    15         list = [f.rstrip('.c') for f in listdir('.')
    16                 if not f.startswith('.') and (
    17                         not isfile(f) or f.endswith('.c')
    18                 )]
     15        list = [splitext(f)[0] for f in listdir('./.expect')
     16                if not f.startswith('.') and f.endswith('.txt')
     17                ]
    1918
    2019        return list
     
    4039
    4140        # build, skipping to next test on error
    42         make_ret = sh("make -j 8 %s > %s 2>&1" % (test, out_file), dry_run)
     41        make_ret = sh("make -j 8 %s 2> %s 1> /dev/null" % (test, out_file), dry_run)
    4342
    4443        if make_ret == 0 :
     
    5150        retcode = 0
    5251        if not generate :
    53                 # touch expected files so empty output are supported by default
    54                 sh("touch .expect/%s.txt" % test, dry_run)
    55 
    5652                # diff the output of the files
    5753                retcode = sh("diff .expect/%s.txt .out/%s.log" % (test, test), dry_run)
     
    6763
    6864        if generate :
    69                 print( "Regenerate tests for: ", end="" )
    70                 print( ", ".join( tests ) )
     65                print( "Regenerate tests for: " )
    7166
    7267        failed = False;
    7368        for t in tests:
    74                 if not generate :
    75                         print("%20s  " % t, end="")
     69                print("%20s  " % t, end="")
    7670                sys.stdout.flush()
    7771                test_failed = run_test_instance(t, generate, dry_run)
     
    8074                if not generate :
    8175                        print("FAILED" if test_failed else "PASSED")
     76                else :
     77                        print( "Done" )
    8278
    8379        sh('make clean > /dev/null 2>&1', dry_run)
    8480
    85         if generate :
    86                 print( "Done" )
    87 
    88         return 0 if failed else 1
     81        return 1 if failed else 0
    8982
    9083################################################################################
     
    9386parser = argparse.ArgumentParser(description='Script which runs cforall tests')
    9487parser.add_argument('--dry-run', help='Don\'t run the tests, only output the commands', action='store_true')
     88parser.add_argument('--list', help='List all test available', action='store_true')
    9589parser.add_argument('--all', help='Run all test available', action='store_true')
    96 parser.add_argument('--generate-expected', help='Regenerate the .expect by running the specified tets, can be used with --all option', action='store_true')
     90parser.add_argument('--regenerate-expected', help='Regenerate the .expect by running the specified tets, can be used with --all option', action='store_true')
    9791parser.add_argument('tests', metavar='test', type=str, nargs='*', help='a list of tests to run')
    9892
    9993options = parser.parse_args()
    10094
    101 if len(options.tests) > 0 and options.all :
     95if (len(options.tests) > 0  and     options.all and not options.list) \
     96or (len(options.tests) == 0 and not options.all and not options.list) :
    10297        print('ERROR: must have option \'--all\' or non-empty test list', file=sys.stderr)
    10398        parser.print_help()
    10499        sys.exit(1)
    105100
    106 tests = listTests() if options.all else options.tests
     101allTests = listTests()
    107102
    108 sys.exit( run_tests(tests, options.generate_expected, options.dry_run) )
     103if options.all or options.list :
     104        tests = allTests
     105
     106else :
     107        tests = []
     108        for test in options.tests:
     109                if test in allTests :
     110                        tests.append(test)
     111                else :
     112                        print('ERROR: No expected file for test %s, ignoring it' % test, file=sys.stderr)
     113
     114        if len(tests) == 0 :
     115                print('ERROR: No valid test to run', file=sys.stderr)
     116                sys.exit(1)
     117
     118if options.list :
     119        print("\n".join(tests))
     120
     121else :
     122        sys.exit( run_tests(tests, options.regenerate_expected, options.dry_run) )
Note: See TracChangeset for help on using the changeset viewer.