Changeset ddfd945 for src/SynTree


Ignore:
Timestamp:
Mar 16, 2017, 8:47:36 AM (8 years ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
Children:
fb04321
Parents:
26ba208
Message:

move type FuncSpecifiers? from DeclarationNode? to Type

Location:
src/SynTree
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified src/SynTree/Declaration.h

    r26ba208 rddfd945  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Mar 16 07:48:23 2017
    13 // Update Count     : 117
     12// Last Modified On : Thu Mar 16 08:34:11 2017
     13// Update Count     : 118
    1414//
    1515
     
    6464class DeclarationWithType : public Declaration {
    6565  public:
    66         DeclarationWithType( const std::string &name, Type::StorageClasses scs, LinkageSpec::Spec linkage, const std::list< Attribute * > & attributes, DeclarationNode::FuncSpecifiers fs );
     66        DeclarationWithType( const std::string &name, Type::StorageClasses scs, LinkageSpec::Spec linkage, const std::list< Attribute * > & attributes, Type::FuncSpecifiers fs );
    6767        DeclarationWithType( const DeclarationWithType &other );
    6868        virtual ~DeclarationWithType();
     
    8282        const std::list< Attribute * >& get_attributes() const { return attributes; }
    8383
    84         DeclarationNode::FuncSpecifiers get_funcSpec() const { return fs; }
    85         //void set_functionSpecifiers( DeclarationNode::FuncSpecifiers newValue ) { fs = newValue; }
     84        Type::FuncSpecifiers get_funcSpec() const { return fs; }
     85        //void set_functionSpecifiers( Type::FuncSpecifiers newValue ) { fs = newValue; }
    8686
    8787        virtual DeclarationWithType *clone() const = 0;
     
    9898        ConstantExpr *asmName;
    9999        std::list< Attribute * > attributes;
    100         DeclarationNode::FuncSpecifiers fs;
     100        Type::FuncSpecifiers fs;
    101101};
    102102
     
    105105  public:
    106106        ObjectDecl( const std::string &name, Type::StorageClasses scs, LinkageSpec::Spec linkage, Expression *bitfieldWidth, Type *type, Initializer *init,
    107                                 const std::list< Attribute * > attributes = std::list< Attribute * >(), DeclarationNode::FuncSpecifiers fs = DeclarationNode::FuncSpecifiers() );
     107                                const std::list< Attribute * > attributes = std::list< Attribute * >(), Type::FuncSpecifiers fs = Type::FuncSpecifiers() );
    108108        ObjectDecl( const ObjectDecl &other );
    109109        virtual ~ObjectDecl();
     
    133133  public:
    134134        FunctionDecl( const std::string &name, Type::StorageClasses scs, LinkageSpec::Spec linkage, FunctionType *type, CompoundStmt *statements,
    135                                   const std::list< Attribute * > attributes = std::list< Attribute * >(), DeclarationNode::FuncSpecifiers fs = DeclarationNode::FuncSpecifiers() );
     135                                  const std::list< Attribute * > attributes = std::list< Attribute * >(), Type::FuncSpecifiers fs = Type::FuncSpecifiers() );
    136136        FunctionDecl( const FunctionDecl &other );
    137137        virtual ~FunctionDecl();
  • TabularUnified src/SynTree/DeclarationWithType.cc

    r26ba208 rddfd945  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Mar 16 07:49:27 2017
    13 // Update Count     : 24
     12// Last Modified On : Thu Mar 16 08:34:35 2017
     13// Update Count     : 25
    1414//
    1515
     
    1919#include "Common/utility.h"
    2020
    21 DeclarationWithType::DeclarationWithType( const std::string &name, Type::StorageClasses scs, LinkageSpec::Spec linkage, const std::list< Attribute * > & attributes, DeclarationNode::FuncSpecifiers fs )
     21DeclarationWithType::DeclarationWithType( const std::string &name, Type::StorageClasses scs, LinkageSpec::Spec linkage, const std::list< Attribute * > & attributes, Type::FuncSpecifiers fs )
    2222        : Declaration( name, scs, linkage ), asmName( nullptr ), attributes( attributes ), fs( fs ) {
    2323}
  • TabularUnified src/SynTree/FunctionDecl.cc

    r26ba208 rddfd945  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Mar 16 07:49:35 2017
    13 // Update Count     : 73
     12// Last Modified On : Thu Mar 16 08:33:41 2017
     13// Update Count     : 74
    1414//
    1515
     
    2626extern bool translation_unit_nomain;
    2727
    28 FunctionDecl::FunctionDecl( const std::string &name, Type::StorageClasses scs, LinkageSpec::Spec linkage, FunctionType *type, CompoundStmt *statements, std::list< Attribute * > attributes, DeclarationNode::FuncSpecifiers fs )
     28FunctionDecl::FunctionDecl( const std::string &name, Type::StorageClasses scs, LinkageSpec::Spec linkage, FunctionType *type, CompoundStmt *statements, std::list< Attribute * > attributes, Type::FuncSpecifiers fs )
    2929        : Parent( name, scs, linkage, attributes, fs ), type( type ), statements( statements ) {
    3030        // hack forcing the function "main" to have Cforall linkage to replace main even if it is inside an extern
  • TabularUnified src/SynTree/ObjectDecl.cc

    r26ba208 rddfd945  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Mar 16 07:49:51 2017
    13 // Update Count     : 58
     12// Last Modified On : Thu Mar 16 08:34:27 2017
     13// Update Count     : 59
    1414//
    1515
     
    2222#include "Statement.h"
    2323
    24 ObjectDecl::ObjectDecl( const std::string &name, Type::StorageClasses scs, LinkageSpec::Spec linkage, Expression *bitfieldWidth, Type *type, Initializer *init, const std::list< Attribute * > attributes, DeclarationNode::FuncSpecifiers fs )
     24ObjectDecl::ObjectDecl( const std::string &name, Type::StorageClasses scs, LinkageSpec::Spec linkage, Expression *bitfieldWidth, Type *type, Initializer *init, const std::list< Attribute * > attributes, Type::FuncSpecifiers fs )
    2525        : Parent( name, scs, linkage, attributes, fs ), type( type ), init( init ), bitfieldWidth( bitfieldWidth ) {
    2626}
  • TabularUnified src/SynTree/Type.cc

    r26ba208 rddfd945  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Mar 16 07:57:45 2017
    13 // Update Count     : 20
     12// Last Modified On : Thu Mar 16 08:32:44 2017
     13// Update Count     : 22
    1414//
    1515
     
    6060
    6161// These must remain in the same order as the corresponding bit fields.
     62const char * Type::FuncSpecifiers::Names[] = { "inline", "fortran", "_Noreturn" };
    6263const char * Type::StorageClasses::Names[] = { "extern", "static", "auto", "register", "_Thread_local" };
    6364const char * Type::Qualifiers::Names[] = { "const", "restrict", "volatile", "lvalue", "mutex", "_Atomic" };
  • TabularUnified src/SynTree/Type.h

    r26ba208 rddfd945  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Mar 16 07:45:29 2017
    13 // Update Count     : 90
     12// Last Modified On : Thu Mar 16 08:28:02 2017
     13// Update Count     : 91
    1414//
    1515
     
    2525  public:
    2626        // enum must remain in the same order as the corresponding bit fields.
     27
     28        enum { Inline = 1 << 0, Noreturn = 1 << 1, Fortran = 1 << 2, NumFuncSpecifier = 3 };
     29        union FuncSpecifiers {
     30                static const char * Names[];
     31                unsigned int val;
     32                struct {
     33                        bool is_inline : 1;
     34                        bool is_noreturn : 1;
     35                        bool is_fortran : 1;
     36                };
     37                FuncSpecifiers() : val( 0 ) {}
     38                FuncSpecifiers( unsigned int val ) : val( val ) {}
     39                bool operator[]( unsigned int i ) const { return val & (1 << i); }
     40                bool any() const { return val != 0; }
     41                void print( std::ostream & os ) const {
     42                        if ( (*this).any() ) {                                          // any function specifiers ?
     43                                for ( unsigned int i = 0; i < NumFuncSpecifier; i += 1 ) {
     44                                        if ( (*this)[i] ) {
     45                                                os << FuncSpecifiers::Names[i] << ' ';
     46                                        } // if
     47                                } // for
     48                        } // if
     49                }
     50        }; // FuncSpecifiers
    2751
    2852        enum { Extern = 1 << 0, Static = 1 << 1, Auto = 1 << 2, Register = 1 << 3, Threadlocal = 1 << 4, NumStorageClass = 5 };
Note: See TracChangeset for help on using the changeset viewer.