Changeset 8217e8f for src


Ignore:
Timestamp:
Aug 14, 2017, 2:07:34 PM (8 years ago)
Author:
Rob Schluntz <rschlunt@…>
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:
6cfe8bb
Parents:
36a5a77 (diff), bd46af4 (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 references

Location:
src
Files:
7 added
1 deleted
8 edited
2 moved

Legend:

Unmodified
Added
Removed
  • src/Common/Indenter.h

    r36a5a77 r8217e8f  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // utility.h --
     7// Indenter.h --
    88//
    9 // Author           : Richard C. Bilson
    10 // Created On       : Mon May 18 07:44:20 2015
     9// Author           : Rob Schluntz
     10// Created On       : Fri Jun 30 16:55:23 2017
    1111// Last Modified By : Andrew Beach
    12 // Last Modified On : Fri May 5 11:03:00 2017
    13 // Update Count     : 32
     12// Last Modified On : Fri Aug 11 11:15:00 2017
     13// Update Count     : 1
    1414//
    1515
  • src/ControlStruct/MLEMutator.cc

    r36a5a77 r8217e8f  
    154154                return switchStmt;
    155155        }
     156
     157        void addUnused( Statement * stmt, const Label & originalTarget ) {
     158                // break/continue without a label doesn't need unused attribute
     159                if ( originalTarget == "" ) return;
     160                // add unused attribute to the originalTarget of a labelled break/continue
     161                for ( Label & l : stmt->get_labels() ) {
     162                        // find the label to add unused attribute to
     163                        if ( l == originalTarget ) {
     164                                for ( Attribute * attr : l.get_attributes() ) {
     165                                        // ensure attribute isn't added twice
     166                                        if ( attr->get_name() == "unused" ) return;
     167                                }
     168                                l.get_attributes().push_back( new Attribute( "unused" ) );
     169                                return;
     170                        }
     171                }
     172                assertf( false, "Could not find label '%s' on statement %s", originalTarget.get_name().c_str(), toString( stmt ).c_str() );
     173        }
     174
    156175
    157176        Statement *MLEMutator::mutate( BranchStmt *branchStmt ) throw ( SemanticError ) {
     
    204223                } // switch
    205224
     225                // add unused attribute to label to silence warnings
     226                addUnused( targetEntry->get_controlStructure(), branchStmt->get_originalTarget() );
     227
    206228                // transform break/continue statements into goto to simplify later handling of branches
    207229                delete branchStmt;
  • src/Parser/DeclarationNode.cc

    r36a5a77 r8217e8f  
    1010// Created On       : Sat May 16 12:34:05 2015
    1111// Last Modified By : Andrew Beach
    12 // Last Modified On : Fri Jul 14 16:55:00 2017
    13 // Update Count     : 1020
     12// Last Modified On : Thr Aug 10 17:02:00 2017
     13// Update Count     : 1021
    1414//
    1515
     
    275275        return newnode;
    276276} // DeclarationNode::newEnumConstant
    277 
    278 DeclarationNode * DeclarationNode::newTreeStruct( Aggregate kind, const string * name, const string * parent, ExpressionNode * actuals, DeclarationNode * fields, bool body ) {
    279         assert( name );
    280         DeclarationNode * newnode = new DeclarationNode;
    281         newnode->type = new TypeData( TypeData::Aggregate );
    282         newnode->type->aggregate.kind = kind;
    283         newnode->type->aggregate.name = name;
    284         newnode->type->aggregate.actuals = actuals;
    285         newnode->type->aggregate.fields = fields;
    286         newnode->type->aggregate.body = body;
    287         newnode->type->aggregate.tagged = true;
    288         newnode->type->aggregate.parent = parent;
    289         return newnode;
    290 } // DeclarationNode::newTreeStruct
    291277
    292278DeclarationNode * DeclarationNode::newName( string * name ) {
  • src/Parser/ParseNode.h

    r36a5a77 r8217e8f  
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Sat May 16 13:28:16 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jul 27 12:08:08 2017
    13 // Update Count     : 788
     11// Last Modified By : Andrew Beach
     12// Last Modified On : Thu Aug 10 16:54:00 2017
     13// Update Count     : 789
    1414//
    1515
     
    248248        static DeclarationNode * newAsmStmt( StatementNode * stmt ); // gcc external asm statement
    249249
    250         // Perhaps this would best fold into newAggragate.
    251         static DeclarationNode * newTreeStruct( Aggregate kind, const std::string * name, const std::string * parent, ExpressionNode * actuals, DeclarationNode * fields, bool body );
    252 
    253250        DeclarationNode();
    254251        ~DeclarationNode();
     
    335332
    336333        static UniqueName anonymous;
    337 
    338         // Temp to test TreeStruct
    339         const std::string * parent_name;
    340334}; // DeclarationNode
    341335
  • src/Parser/TypeData.cc

    r36a5a77 r8217e8f  
    1010// Created On       : Sat May 16 15:12:51 2015
    1111// Last Modified By : Andrew Beach
    12 // Last Modified On : Wed Aug  9 13:50:00 2017
    13 // Update Count     : 567
     12// Last Modified On : Mon Aug 14 10:41:00 2017
     13// Update Count     : 568
    1414//
    1515
     
    6464                aggregate.fields = nullptr;
    6565                aggregate.body = false;
    66                 aggregate.tagged = false;
    67                 aggregate.parent = nullptr;
    6866                break;
    6967          case AggregateInst:
     
    125123                delete aggregate.actuals;
    126124                delete aggregate.fields;
    127                 delete aggregate.parent;
    128125                // delete aggregate;
    129126                break;
     
    640637        switch ( td->aggregate.kind ) {
    641638          case DeclarationNode::Struct:
    642                 if ( td->aggregate.tagged ) {
    643                         at = new StructDecl( *td->aggregate.name, td->aggregate.parent, attributes, linkage );
    644                         buildForall( td->aggregate.params, at->get_parameters() );
    645                         break;
    646                 }
    647639          case DeclarationNode::Coroutine:
    648640          case DeclarationNode::Monitor:
     
    652644                break;
    653645          case DeclarationNode::Union:
    654                 at = new UnionDecl( *td->aggregate.name, attributes );
     646                at = new UnionDecl( *td->aggregate.name, attributes, linkage );
    655647                buildForall( td->aggregate.params, at->get_parameters() );
    656648                break;
    657649          case DeclarationNode::Trait:
    658                 at = new TraitDecl( *td->aggregate.name, attributes );
     650                at = new TraitDecl( *td->aggregate.name, attributes, linkage );
    659651                buildList( td->aggregate.params, at->get_parameters() );
    660652                break;
     
    673665          case TypeData::Enum: {
    674666                  if ( type->enumeration.body ) {
    675                           EnumDecl * typedecl = buildEnum( type, attributes );
     667                          EnumDecl * typedecl = buildEnum( type, attributes, linkage );
    676668                          return new EnumInstType( buildQualifiers( type ), typedecl );
    677669                  } else {
     
    778770} // buildSymbolic
    779771
    780 EnumDecl * buildEnum( const TypeData * td, std::list< Attribute * > attributes ) {
     772EnumDecl * buildEnum( const TypeData * td, std::list< Attribute * > attributes, LinkageSpec::Spec linkage ) {
    781773        assert( td->kind == TypeData::Enum );
    782         EnumDecl * ret = new EnumDecl( *td->enumeration.name, attributes );
     774        EnumDecl * ret = new EnumDecl( *td->enumeration.name, attributes, linkage );
    783775        buildList( td->enumeration.constants, ret->get_members() );
    784776        list< Declaration * >::iterator members = ret->get_members().begin();
     
    831823                return buildAggregate( td, attributes, linkage );
    832824        } else if ( td->kind == TypeData::Enum ) {
    833                 return buildEnum( td, attributes );
     825                return buildEnum( td, attributes, linkage );
    834826        } else if ( td->kind == TypeData::Symbolic ) {
    835827                return buildSymbolic( td, name, scs, linkage );
  • src/Parser/TypeData.h

    r36a5a77 r8217e8f  
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Sat May 16 15:18:36 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jul 22 09:32:47 2017
    13 // Update Count     : 188
     11// Last Modified By : Andrew Beach
     12// Last Modified On : Mon Aug 14 10:38:00 2017
     13// Update Count     : 189
    1414//
    1515
     
    108108ReferenceToType * buildAggInst( const TypeData * );
    109109TypeDecl * buildVariable( const TypeData * );
    110 EnumDecl * buildEnum( const TypeData *, std::list< Attribute * > );
     110EnumDecl * buildEnum( const TypeData *, std::list< Attribute * >, LinkageSpec::Spec );
    111111TypeInstType * buildSymbolicInst( const TypeData * );
    112112TupleType * buildTuple( const TypeData * );
  • src/SynTree/Declaration.h

    r36a5a77 r8217e8f  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Andrew Beach
    12 // Last Modified On : Wed Aug  9 14:45:00 2017
    13 // Update Count     : 126
     12// Last Modified On : Mon Aug 14 10:15:00 2017
     13// Update Count     : 128
    1414//
    1515
     
    269269        typedef AggregateDecl Parent;
    270270  public:
    271         StructDecl( const std::string &name, DeclarationNode::Aggregate kind = DeclarationNode::Struct, const std::list< Attribute * > & attributes = std::list< class Attribute * >(), LinkageSpec::Spec linkage = LinkageSpec::Cforall ) : Parent( name, attributes, linkage ), kind( kind ), tagged( false ), parent_name( "" ) {}
    272         StructDecl( const std::string &name, const std::string *parent, const std::list< Attribute * > & attributes = std::list< class Attribute * >(), LinkageSpec::Spec linkage = LinkageSpec::Cforall ) : Parent( name, attributes, linkage ), kind( DeclarationNode::Struct ), tagged( true ), parent_name( parent ? *parent : "" ) {}
    273         StructDecl( const StructDecl &other ) : Parent( other ) {}
     271        StructDecl( const std::string &name, DeclarationNode::Aggregate kind = DeclarationNode::Struct, const std::list< Attribute * > & attributes = std::list< class Attribute * >(), LinkageSpec::Spec linkage = LinkageSpec::Cforall ) : Parent( name, attributes, linkage ), kind( kind ) {}
     272        StructDecl( const StructDecl &other ) : Parent( other ), kind( other.kind ) {}
    274273
    275274        bool is_coroutine() { return kind == DeclarationNode::Coroutine; }
     
    277276        bool is_thread() { return kind == DeclarationNode::Thread; }
    278277
    279         // Tagged/Tree Structure Excetion
    280         bool get_tagged() { return tagged; }
    281         void set_tagged( bool newValue ) { tagged = newValue; }
    282         bool has_parent() { return parent_name != ""; }
    283         std::string get_parentName() { return parent_name; }
    284 
    285278        virtual StructDecl *clone() const { return new StructDecl( *this ); }
    286279        virtual void accept( Visitor &v ) { v.visit( this ); }
     
    289282        DeclarationNode::Aggregate kind;
    290283        virtual std::string typeString() const;
    291 
    292         bool tagged;
    293         std::string parent_name;
    294284};
    295285
     
    323313        typedef AggregateDecl Parent;
    324314  public:
    325         TraitDecl( const std::string &name, const std::list< Attribute * > & attributes ) : Parent( name ) {
     315        TraitDecl( const std::string &name, const std::list< Attribute * > & attributes, LinkageSpec::Spec linkage ) : Parent( name, attributes, linkage ) {
    326316                assertf( attributes.empty(), "attribute unsupported for traits" );
    327317        }
  • src/tests/.expect/32/math2.txt

    r36a5a77 r8217e8f  
    1 fmod:1 1 1 1 1 1
    2 remainder:-1 -1 -1
    3 remquo:7 0.0999999 7 0.1 7 0.0999999999999999999
    4 div:7, 0.2 7, 0.2 7, 0.2
    5 fma:-2 -2 -2
    6 fdim:2 2 2
    7 nan:nan nan nan
    8 exp:2.71828 2.71828182845905 2.71828182845904524 1.46869+2.28736i 1.46869393991589+2.28735528717884i 1.46869393991588516+2.28735528717884239i
    9 exp2:2 2 2
    10 expm1:1.71828 1.71828182845905 1.71828182845904524
    11 pow:1 1 1 0.273957+0.583701i 0.273957253830121+0.583700758758615i 0.273957253830121071+0.583700758758614628i
    12 16 256
    13 912673 256 64 -64 0.015625 -0.015625 18.3791736799526 0.264715-1.1922i
    14 log:0 0 0 0.346574+0.785398i 0.346573590279973+0.785398163397448i 0.346573590279972655+0.78539816339744831i
    15 log2:3 3 3
    16 log10:2 2 2
    17 log1p:0.693147 0.693147180559945 0.693147180559945309
    18 ilogb:0 0 0
    19 logb:3 3 3
    20 sqrt:1 1 1 1.09868+0.45509i 1.09868411346781+0.455089860562227i 1.09868411346780997+0.455089860562227341i
    21 cbrt:3 3 3
    22 hypot:1.41421 1.4142135623731 1.41421356237309505
    231sin:0.841471 0.841470984807897 0.841470984807896507 1.29846+0.634964i 1.29845758141598+0.634963914784736i 1.29845758141597729+0.634963914784736108i
    242cos:0.540302 0.54030230586814 0.540302305868139717 0.83373-0.988898i 0.833730025131149-0.988897705762865i 0.833730025131149049-0.988897705762865096i
     
    275acos:0 0 0 0.904557-1.06128i 0.904556894302381-1.06127506190504i 0.904556894302381364-1.06127506190503565i
    286atan:0.785398 0.785398163397448 0.78539816339744831 1.01722+0.402359i 1.01722196789785+0.402359478108525i 1.01722196789785137+0.402359478108525094i
    29 atan2:0.785398 0.785398163397448 0.78539816339744831 atan:0.785398 0.785398163397448 0.78539816339744831 sinh:1.1752 1.1752011936438 1.17520119364380146 0.634964+1.29846i 0.634963914784736+1.29845758141598i 0.634963914784736108+1.29845758141597729i
     7atan2:0.785398 0.785398163397448 0.78539816339744831 atan:0.785398 0.785398163397448 0.78539816339744831
     8sinh:1.1752 1.1752011936438 1.17520119364380146 0.634964+1.29846i 0.634963914784736+1.29845758141598i 0.634963914784736108+1.29845758141597729i
    309cosh:1.54308 1.54308063481524 1.54308063481524378 0.83373+0.988898i 0.833730025131149+0.988897705762865i 0.833730025131149049+0.988897705762865096i
    3110tanh:0.761594 0.761594155955765 0.761594155955764888 1.08392+0.271753i 1.08392332733869+0.271752585319512i 1.08392332733869454+0.271752585319511717i
     
    3817lgamma:1.79176 1 1.79175946922805 1 1.791759469228055 1
    3918tgamma:6 6 6
    40 floor:1 1 1
    41 ceil:2 2 2
    42 trunc:3 3 3
    43 rint:2 2 2
    44 rint:2 2 2
    45 rint:2 2 2
    46 lrint:2 2 2
    47 llrint:2 2 2
    48 nearbyint:4 4 4
    49 round:2 2 2
    50 round:2 2 2
    51 round:2 2 2
    52 lround:2 2 2
    53 llround:2 2 2
    54 copysign:-1 -1 -1
    55 frexp:0.5 3 0.5 3 0.5 3
    56 ldexp:8 8 8
    57 modf:2 0.3 2 0.3 2 0.3
    58 modf:2, 0.3 2, 0.3 2, 0.3
    59 nextafter:2 2 2
    60 nexttoward:2 2 2
    61 scalbn:16 16 16
    62 scalbln:16 16 16
  • src/tests/.expect/64/math2.txt

    r36a5a77 r8217e8f  
    1 fmod:1 1 1 1 1 1
    2 remainder:-1 -1 -1
    3 remquo:7 0.0999999 7 0.1 7 0.0999999999999999999
    4 div:7, 0.2 7, 0.2 7, 0.2
    5 fma:-2 -2 -2
    6 fdim:2 2 2
    7 nan:nan nan nan
    8 exp:2.71828 2.71828182845905 2.71828182845904524 1.46869+2.28736i 1.46869393991589+2.28735528717884i 1.46869393991588516+2.28735528717884239i
    9 exp2:2 2 2
    10 expm1:1.71828 1.71828182845905 1.71828182845904524
    11 pow:1 1 1 0.273957+0.583701i 0.273957253830121+0.583700758758615i 0.273957253830121071+0.583700758758614627i
    12 16 256
    13 912673 256 64 -64 0.015625 -0.015625 18.3791736799526 0.264715-1.1922i
    14 log:0 0 0 0.346574+0.785398i 0.346573590279973+0.785398163397448i 0.346573590279972655+0.78539816339744831i
    15 log2:3 3 3
    16 log10:2 2 2
    17 log1p:0.693147 0.693147180559945 0.693147180559945309
    18 ilogb:0 0 0
    19 logb:3 3 3
    20 sqrt:1 1 1 1.09868+0.45509i 1.09868411346781+0.455089860562227i 1.09868411346780997+0.455089860562227341i
    21 cbrt:3 3 3
    22 hypot:1.41421 1.4142135623731 1.41421356237309505
    231sin:0.841471 0.841470984807897 0.841470984807896507 1.29846+0.634964i 1.29845758141598+0.634963914784736i 1.29845758141597729+0.634963914784736108i
    242cos:0.540302 0.54030230586814 0.540302305868139717 0.83373-0.988898i 0.833730025131149-0.988897705762865i 0.833730025131149049-0.988897705762865096i
     
    275acos:0 0 0 0.904557-1.06128i 0.904556894302381-1.06127506190504i 0.904556894302381364-1.06127506190503565i
    286atan:0.785398 0.785398163397448 0.78539816339744831 1.01722+0.402359i 1.01722196789785+0.402359478108525i 1.01722196789785137+0.402359478108525094i
    29 atan2:0.785398 0.785398163397448 0.78539816339744831 atan:0.785398 0.785398163397448 0.78539816339744831 sinh:1.1752 1.1752011936438 1.17520119364380146 0.634964+1.29846i 0.634963914784736+1.29845758141598i 0.634963914784736108+1.29845758141597729i
     7atan2:0.785398 0.785398163397448 0.78539816339744831 atan:0.785398 0.785398163397448 0.78539816339744831
     8sinh:1.1752 1.1752011936438 1.17520119364380146 0.634964+1.29846i 0.634963914784736+1.29845758141598i 0.634963914784736108+1.29845758141597729i
    309cosh:1.54308 1.54308063481524 1.54308063481524378 0.83373+0.988898i 0.833730025131149+0.988897705762865i 0.833730025131149049+0.988897705762865096i
    3110tanh:0.761594 0.761594155955765 0.761594155955764888 1.08392+0.271753i 1.08392332733869+0.271752585319512i 1.08392332733869454+0.271752585319511717i
     
    3817lgamma:1.79176 1 1.79175946922805 1 1.791759469228055 1
    3918tgamma:6 6 6
    40 floor:1 1 1
    41 ceil:2 2 2
    42 trunc:3 3 3
    43 rint:2 2 2
    44 rint:2 2 2
    45 rint:2 2 2
    46 lrint:2 2 2
    47 llrint:2 2 2
    48 nearbyint:4 4 4
    49 round:2 2 2
    50 round:2 2 2
    51 round:2 2 2
    52 lround:2 2 2
    53 llround:2 2 2
    54 copysign:-1 -1 -1
    55 frexp:0.5 3 0.5 3 0.5 3
    56 ldexp:8 8 8
    57 modf:2 0.3 2 0.3 2 0.3
    58 modf:2, 0.3 2, 0.3 2, 0.3
    59 nextafter:2 2 2
    60 nexttoward:2 2 2
    61 scalbn:16 16 16
    62 scalbln:16 16 16
  • src/tests/pybin/tools.py

    r36a5a77 r8217e8f  
    8585                                "--unchanged-group-format='%%=' \\"
    8686                                "--changed-group-format='\t\texpected :\n"
    87                                 "%%<\n"
     87                                "%%<"
    8888                                "\t\tgot :\n"
    89                                 "%%>' \\\n"
     89                                "%%>\n' \\\n"
    9090                                "--new-line-format='\t\t%%dn\t%%L' \\\n"
    9191                                "--old-line-format='\t\t%%dn\t%%L' \\\n"
     
    9494
    9595        # fetch return code and error from the diff command
    96         return sh(diff_cmd % (lhs, rhs), dry_run, False)       
     96        return sh(diff_cmd % (lhs, rhs), dry_run, False)
Note: See TracChangeset for help on using the changeset viewer.