Changeset d912bed


Ignore:
Timestamp:
Dec 16, 2019, 5:40:36 PM (5 years ago)
Author:
Peter A. Buhr <pabuhr@…>
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:
7006ba5
Parents:
6f9cc13
Message:

harmonize SynTree/LinkageSpec?.* with AST/LinkageSpec.*

Location:
src
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/DeclarationNode.cc

    r6f9cc13 rd912bed  
    1010// Created On       : Sat May 16 12:34:05 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Dec 16 09:32:40 2019
    13 // Update Count     : 1132
     12// Last Modified On : Mon Dec 16 15:32:22 2019
     13// Update Count     : 1133
    1414//
    1515
     
    133133
    134134        if ( linkage != LinkageSpec::Cforall ) {
    135                 os << LinkageSpec::linkageName( linkage ) << " ";
     135                os << LinkageSpec::name( linkage ) << " ";
    136136        } // if
    137137
  • src/Parser/parser.yy

    r6f9cc13 rd912bed  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Dec 16 07:45:59 2019
    13 // Update Count     : 4408
     12// Last Modified On : Mon Dec 16 15:32:58 2019
     13// Update Count     : 4409
    1414//
    1515
     
    25892589                {
    25902590                        linkageStack.push( linkage );                           // handle nested extern "C"/"Cforall"
    2591                         linkage = LinkageSpec::linkageUpdate( yylloc, linkage, $2 );
     2591                        linkage = LinkageSpec::update( yylloc, linkage, $2 );
    25922592                }
    25932593          '{' up external_definition_list_opt down '}'
  • src/SynTree/AggregateDecl.cc

    r6f9cc13 rd912bed  
    1010// Created On       : Sun May 17 23:56:39 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Dec 13 23:10:22 2019
    13 // Update Count     : 30
     12// Last Modified On : Mon Dec 16 15:07:20 2019
     13// Update Count     : 31
    1414//
    1515
     
    5555        os << typeString() << " " << name << ":";
    5656        if ( get_linkage() != LinkageSpec::Cforall ) {
    57                 os << " " << LinkageSpec::linkageName( linkage );
     57                os << " " << LinkageSpec::name( linkage );
    5858        } // if
    5959        os << " with body " << has_body();
  • src/SynTree/FunctionDecl.cc

    r6f9cc13 rd912bed  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Dec 13 23:10:34 2019
    13 // Update Count     : 76
     12// Last Modified On : Mon Dec 16 15:11:20 2019
     13// Update Count     : 77
    1414//
    1515
     
    7373        } // if
    7474        if ( linkage != LinkageSpec::Cforall ) {
    75                 os << LinkageSpec::linkageName( linkage ) << " ";
     75                os << LinkageSpec::name( linkage ) << " ";
    7676        } // if
    7777
  • src/SynTree/LinkageSpec.cc

    r6f9cc13 rd912bed  
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Sat May 16 13:22:09 2015
    11 // Last Modified By : Andrew Beach
    12 // Last Modified On : Thr Spt 12 15:59:00 2018
    13 // Update Count     : 26
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Mon Dec 16 15:02:29 2019
     13// Update Count     : 28
    1414//
    1515
    16 #include <memory>
     16#include <cassert>
     17#include <memory>   // for unique_ptr
    1718#include <string>
    18 #include <cassert>
    1919using namespace std;
    2020
     
    2323
    2424namespace LinkageSpec {
     25        Spec update( CodeLocation location, Spec spec, const string * cmd ) {
     26                assert( cmd );
     27                unique_ptr<const string> guard( cmd ); // allocated by lexer
     28                if ( *cmd == "\"Cforall\"" ) {
     29                        spec.is_mangled = true;
     30                        return spec;
     31                } else if ( *cmd == "\"C\"" ) {
     32                        spec.is_mangled = false;
     33                        return spec;
     34                } else {
     35                        SemanticError( location, "Invalid linkage specifier " + *cmd );
     36                } // if
     37        } // update
    2538
    26 Spec linkageUpdate( CodeLocation location, Spec old_spec, const string * cmd ) {
    27         assert( cmd );
    28         unique_ptr<const string> guard( cmd ); // allocated by lexer
    29         if ( *cmd == "\"Cforall\"" ) {
    30                 old_spec.is_mangled = true;
    31                 return old_spec;
    32         } else if ( *cmd == "\"C\"" ) {
    33                 old_spec.is_mangled = false;
    34                 return old_spec;
    35         } else {
    36                 SemanticError( location, "Invalid linkage specifier " + *cmd );
    37         } // if
    38 }
    39 
    40 std::string linkageName( Spec linkage ) {
    41     switch ( linkage ) {
    42     case Intrinsic:
    43         return "intrinsic";
    44     case C:
    45         return "C";
    46     case Cforall:
    47         return "Cforall";
    48     case AutoGen:
    49         return "autogenerated cfa";
    50     case Compiler:
    51         return "compiler built-in";
    52     case BuiltinCFA:
    53         return "cfa built-in";
    54     case BuiltinC:
    55         return "c built-in";
    56     default:
    57         return "<unnamed linkage spec>";
    58     }
    59 }
    60 
     39        string name( Spec spec ) {
     40                switch ( spec ) {
     41                  case Intrinsic: return "intrinsic";
     42                  case C: return "C";
     43                  case Cforall: return "Cforall";
     44                  case AutoGen: return "autogenerated cfa";
     45                  case Compiler: return "compiler built-in";
     46                  case BuiltinCFA: return "cfa built-in";
     47                  case BuiltinC: return "c built-in";
     48                  default: return "<unnamed linkage spec>";
     49                } // siwtch
     50        } // name
    6151} // LinkageSpec
    6252
  • src/SynTree/LinkageSpec.h

    r6f9cc13 rd912bed  
    1010// Created On       : Sat May 16 13:24:28 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Jul 10 16:02:34 2019
    13 // Update Count     : 18
     12// Last Modified On : Mon Dec 16 15:03:43 2019
     13// Update Count     : 20
    1414//
    1515
     
    2121
    2222namespace LinkageSpec {
    23         // All linkage specs are some combination of these flags:
    24         enum { Mangle = 1 << 0, Generate = 1 << 1, Overrideable = 1 << 2, Builtin = 1 << 3, GccBuiltin = 1 << 4, NoOfSpecs = 1 << 5, };
     23        // Bitflags for linkage specifiers
     24        enum {
     25                Mangle = 1 << 0,
     26                Generate = 1 << 1,
     27                Overrideable = 1 << 2,
     28                Builtin = 1 << 3,
     29                GccBuiltin = 1 << 4,
     30        };
    2531
     32        // Bitflag type for storage classes
    2633        union Spec {
    2734                unsigned int val;
     
    4249
    4350
    44         Spec linkageUpdate( CodeLocation location, Spec old_spec, const std::string * cmd );
    45         /* If cmd = "C" returns a Spec that is old_spec with is_mangled = false
    46          * If cmd = "Cforall" returns old_spec Spec with is_mangled = true
    47          */
     51        Spec update( CodeLocation location, Spec spec, const std::string * cmd );
     52        // If cmd = "C" returns a Spec that is old_spec with is_mangled = false
     53        // If cmd = "Cforall" returns old_spec Spec with is_mangled = true
    4854
    49         std::string linkageName( Spec );
     55        std::string name( Spec );
    5056
    5157        // To Update: LinkageSpec::isXyz( cur_spec ) -> cur_spec.is_xyz
  • src/SynTree/NamedTypeDecl.cc

    r6f9cc13 rd912bed  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Dec 13 23:44:24 2019
    13 // Update Count     : 16
     12// Last Modified On : Mon Dec 16 15:11:40 2019
     13// Update Count     : 17
    1414//
    1515
     
    4444
    4545        if ( linkage != LinkageSpec::Cforall ) {
    46                 os << LinkageSpec::linkageName( linkage ) << " ";
     46                os << LinkageSpec::name( linkage ) << " ";
    4747        } // if
    4848        get_storageClasses().print( os );
  • src/SynTree/ObjectDecl.cc

    r6f9cc13 rd912bed  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Dec 13 23:44:50 2019
    13 // Update Count     : 60
     12// Last Modified On : Mon Dec 16 15:12:03 2019
     13// Update Count     : 61
    1414//
    1515
     
    4848
    4949        if ( linkage != LinkageSpec::Cforall ) {
    50                 os << LinkageSpec::linkageName( linkage ) << " ";
     50                os << LinkageSpec::name( linkage ) << " ";
    5151        } // if
    5252
Note: See TracChangeset for help on using the changeset viewer.