Changeset c2051e10 for src


Ignore:
Timestamp:
Sep 10, 2019, 2:48:01 PM (5 years ago)
Author:
Thierry Delisle <tdelisle@…>
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:
81e60f7
Parents:
17bc05b (diff), 216597d (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' into distcc

Location:
src
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • src/ResolvExpr/Unify.cc

    r17bc05b rc2051e10  
    99// Author           : Richard C. Bilson
    1010// Created On       : Sun May 17 12:27:10 2015
    11 // Last Modified By : Aaron B. Moss
    12 // Last Modified On : Mon Jun 18 11:58:00 2018
    13 // Update Count     : 43
     11// Last Modified By : Andrew Beach
     12// Last Modified On : Wed Sep  4 10:00:00 2019
     13// Update Count     : 44
    1414//
    1515
     
    278278#endif
    279279                        if ( ( common = commonType( type1, type2, widen.first, widen.second, indexer, env, openVars ) ) ) {
    280                                 common->get_qualifiers() = tq1 | tq2;
     280                                common->tq = tq1.unify( tq2 );
    281281#ifdef DEBUG
    282282                                std::cerr << "unifyInexact: common type is ";
     
    295295                                if ( ( tq1 > tq2 || widen.first ) && ( tq2 > tq1 || widen.second ) ) {
    296296                                        common = type1->clone();
    297                                         common->get_qualifiers() = tq1 | tq2;
     297                                        common->tq = tq1.unify( tq2 );
    298298                                        result = true;
    299299                                } else {
     
    302302                        } else {
    303303                                common = type1->clone();
    304                                 common->get_qualifiers() = tq1 | tq2;
     304                                common->tq = tq1.unify( tq2 );
    305305                                result = true;
    306306                        } // if
  • src/SynTree/Expression.cc

    r17bc05b rc2051e10  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Andrew Beach
    12 // Last Modified On : Tue Aug 13 11:31:00 2019
    13 // Update Count     : 63
     12// Last Modified On : Thr Aug 15 13:43:00 2019
     13// Update Count     : 64
    1414//
    1515
     
    646646                result = new VoidType( Type::Qualifiers() );
    647647        }
     648}
     649bool StmtExpr::get_lvalue() const {
     650        return result->get_lvalue();
    648651}
    649652void StmtExpr::print( std::ostream & os, Indenter indent ) const {
  • src/SynTree/Expression.h

    r17bc05b rc2051e10  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Andrew Beach
    12 // Last Modified On : Wed Aug 14 14:24:00 2019
    13 // Update Count     : 53
     12// Last Modified On : Thr Aug 15 13:46:00 2019
     13// Update Count     : 54
    1414//
    1515
     
    777777        virtual ~StmtExpr();
    778778
     779        bool get_lvalue() const final;
     780
    779781        CompoundStmt * get_statements() const { return statements; }
    780782        StmtExpr * set_statements( CompoundStmt * newValue ) { statements = newValue; return this; }
  • src/SynTree/Type.h

    r17bc05b rc2051e10  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Feb 14 17:11:24 2019
    13 // Update Count     : 169
     11// Last Modified By : Andrew Beach
     12// Last Modified On : Wed Sep  4 09:58:00 2019
     13// Update Count     : 170
    1414//
    1515
     
    131131                bool operator>( Qualifiers other ) const { return *this != other && *this >= other; }
    132132                BFCommon( Qualifiers, NumTypeQualifier )
     133
     134                Qualifiers unify( Qualifiers const & other ) const {
     135                        int or_flags = Mask & (val | other.val);
     136                        int and_flags = val & other.val;
     137                        return Qualifiers( or_flags | and_flags );
     138                }
    133139        }; // Qualifiers
    134140
  • src/main.cc

    r17bc05b rc2051e10  
    1010// Created On       : Fri May 15 23:12:02 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Jun  5 20:35:13 2019
    13 // Update Count     : 601
     12// Last Modified On : Fri Aug 23 06:50:08 2019
     13// Update Count     : 607
    1414//
    1515
     
    9696DeclarationNode * parseTree = nullptr;                                  // program parse tree
    9797
    98 static bool waiting_for_gdb = false; // flag to set cfa-cpp to wait for gdb on start
     98static bool waiting_for_gdb = false;                                    // flag to set cfa-cpp to wait for gdb on start
    9999
    100100static std::string PreludeDirector = "";
    101101
    102 static void parse_cmdline( int argc, char *argv[], const char *& filename );
     102static void parse_cmdline( int argc, char *argv[] );
    103103static void parse( FILE * input, LinkageSpec::Spec linkage, bool shouldExit = false );
    104104static void dump( list< Declaration * > & translationUnit, ostream & out = cout );
     
    172172        FILE * input;                                                                           // use FILE rather than istream because yyin is FILE
    173173        ostream * output = & cout;
    174         const char * filename = nullptr;
    175174        list< Declaration * > translationUnit;
    176175
     
    184183        // } // for
    185184
    186         parse_cmdline( argc, argv, filename );                          // process command-line arguments
     185        parse_cmdline( argc, argv );                                            // process command-line arguments
    187186        CodeGen::FixMain::setReplaceMain( !nomainp );
    188187
    189         if(waiting_for_gdb) {
     188        if ( waiting_for_gdb ) {
    190189                std::cerr << "Waiting for gdb" << std::endl;
    191190                std::cerr << "run :" << std::endl;
    192191                std::cerr << "  gdb attach " << getpid() << std::endl;
    193192                raise(SIGSTOP);
    194         }
     193        } // if
    195194
    196195        try {
     
    198197                if ( optind < argc ) {                                                  // any commands after the flags ? => input file name
    199198                        input = fopen( argv[ optind ], "r" );
    200                         assertf( input, "cannot open %s\n", argv[ optind ] );
    201                         // if running cfa-cpp directly, might forget to pass -F option (and really shouldn't have to)
    202                         if ( filename == nullptr ) filename = argv[ optind ];
    203                         // prelude filename comes in differently
    204                         if ( libcfap ) filename = "prelude.cfa";
     199                        assertf( input, "cannot open %s because %s\n", argv[ optind ], strerror( errno ) );
    205200                        optind += 1;
    206201                } else {                                                                                // no input file name
    207202                        input = stdin;
    208                         std::cerr << "Input from stdin" << std::endl;
    209                         // if running cfa-cpp directly, might forget to pass -F option. Since this takes from stdin, pass
    210                         // a fake name along
    211                         if ( filename == nullptr ) filename = "stdin";
    212203                } // if
    213204
     
    447438
    448439
    449 static const char optstring[] = ":hlLmNnpP:S:tgwW:D:F:";
     440static const char optstring[] = ":hlLmNnpP:S:twW:D:";
    450441
    451442enum { PreludeDir = 128 };
     
    466457        { "", no_argument, nullptr, 0 },                                        // -W
    467458        { "", no_argument, nullptr, 0 },                                        // -D
    468         { "", no_argument, nullptr, 0 },                                        // -F
    469459        { nullptr, 0, nullptr, 0 }
    470460}; // long_opts
     
    486476        "",                                                                                                     // -W
    487477        "",                                                                                                     // -D
    488         "",                                                                                                     // -F
    489478}; // description
    490479
     
    521510
    522511static void usage( char *argv[] ) {
    523     cout << "Usage: " << argv[0] << " options are:" << endl;
     512    cout << "Usage: " << argv[0] << " [options] [input-file (default stdin)] [output-file (default stdout)], where options are:" << endl;
    524513        int i = 0, j = 1;                                                                       // j skips starting colon
    525514        for ( ; long_opts[i].name != 0 && optstring[j] != '\0'; i += 1, j += 1 ) {
     
    547536} // usage
    548537
    549 static void parse_cmdline( int argc, char * argv[], const char *& filename ) {
     538static void parse_cmdline( int argc, char * argv[] ) {
    550539        opterr = 0;                                                                                     // (global) prevent getopt from printing error messages
    551540
     
    621610                  case 'D':                                                                             // ignore -Dxxx, forwarded by cpp, hidden
    622611                        break;
    623                   case 'F':                                                                             // source file-name without suffix, hidden
    624                         filename = optarg;
    625                         break;
    626612                  case '?':                                                                             // unknown option
    627613                        if ( optopt ) {                                                         // short option ?
Note: See TracChangeset for help on using the changeset viewer.