Changes in / [cbdf565:2514607d]
- Location:
- src
- Files:
-
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Common/SemanticError.h
rcbdf565 r2514607d 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed May 16 15:01:23201813 // Update Count : 3 012 // Last Modified On : Thu Jul 19 10:09:17 2018 13 // Update Count : 31 14 14 // 15 15 … … 57 57 {"qualifiers-zero_t-one_t", "questionable use of type qualifier %s with %s", Severity::Warn}, 58 58 {"aggregate-forward-decl" , "forward declaration of nested aggregate: %s" , Severity::Warn}, 59 {"superfluous-decl" , "declaration does not allocate storage: %s" , Severity::Warn}, 59 60 }; 60 61 … … 64 65 BadQualifiersZeroOne, 65 66 AggrForwardDecl, 66 NUMBER_OF_WARNINGS, //This MUST be the last warning 67 SuperfluousDecl, 68 NUMBER_OF_WARNINGS, // This MUST be the last warning 67 69 }; 68 70 -
src/Parser/DeclarationNode.cc
rcbdf565 r2514607d 10 10 // Created On : Sat May 16 12:34:05 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Jul 6 06:56:08201813 // Update Count : 1 08812 // Last Modified On : Fri Jul 20 14:56:54 2018 13 // Update Count : 1107 14 14 // 15 15 … … 54 54 55 55 DeclarationNode::DeclarationNode() : 56 builtin( NoBuiltinType ), 57 type( nullptr ), 58 bitfieldWidth( nullptr ), 59 hasEllipsis( false ), 60 linkage( ::linkage ), 61 asmName( nullptr ), 62 initializer( nullptr ), 63 extension( false ), 64 asmStmt( nullptr ) { 56 linkage( ::linkage ) { 65 57 66 58 // variable.name = nullptr; … … 104 96 newnode->builtin = NoBuiltinType; 105 97 newnode->type = maybeClone( type ); 98 newnode->inLine = inLine; 106 99 newnode->storageClasses = storageClasses; 107 100 newnode->funcSpecs = funcSpecs; … … 131 124 } // DeclarationNode::clone 132 125 133 void DeclarationNode::print( std::ostream & os, int indent ) const {126 void DeclarationNode::print( std::ostream & os, int indent ) const { 134 127 os << string( indent, ' ' ); 135 128 if ( name ) { … … 167 160 } 168 161 169 void DeclarationNode::printList( std::ostream & os, int indent ) const {162 void DeclarationNode::printList( std::ostream & os, int indent ) const { 170 163 ParseNode::printList( os, indent ); 171 164 if ( hasEllipsis ) { … … 521 514 } // DeclarationNode::copySpecifiers 522 515 523 static void addQualifiersToType( TypeData *& src, TypeData * dst ) {516 static void addQualifiersToType( TypeData *& src, TypeData * dst ) { 524 517 if ( dst->base ) { 525 518 addQualifiersToType( src, dst->base ); … … 574 567 } // addQualifiers 575 568 576 static void addTypeToType( TypeData *& src, TypeData *&dst ) {569 static void addTypeToType( TypeData *& src, TypeData *& dst ) { 577 570 if ( src->forall && dst->kind == TypeData::Function ) { 578 571 if ( dst->forall ) { … … 965 958 } 966 959 967 void buildList( const DeclarationNode * firstNode, std::list< Declaration * > & outputList ) {960 void buildList( const DeclarationNode * firstNode, std::list< Declaration * > & outputList ) { 968 961 SemanticErrorException errors; 969 962 std::back_insert_iterator< std::list< Declaration * > > out( outputList ); … … 1002 995 // struct T; // anonymous member 1003 996 // }; 1004 if ( ! (extracted && decl->name == "" && ! anon ) ) {1005 if ( decl->name == "") {997 if ( ! (extracted && decl->name == "" && ! anon && ! cur->get_inLine()) ) { 998 if ( decl->name == "" ) { 1006 999 if ( DeclarationWithType * dwt = dynamic_cast<DeclarationWithType *>( decl ) ) { 1007 1000 if ( ReferenceToType * aggr = dynamic_cast<ReferenceToType *>( dwt->get_type() ) ) { 1008 1001 if ( aggr->name.find("anonymous") == std::string::npos ) { 1009 bool isInline = false; 1010 if (cur->type->kind == TypeData::Aggregate || cur->type->kind == TypeData::AggregateInst) { 1011 if (cur->type->kind == TypeData::Aggregate) { 1012 isInline = cur->type->aggregate.inLine; 1013 } else { 1014 isInline = cur->type->aggInst.inLine; 1015 if ( TypeData * aggr = cur->type->aggInst.aggregate ) { 1016 if ( aggr->kind == TypeData::Aggregate ) { 1017 isInline = isInline || aggr->aggregate.inLine; 1018 } 1019 } 1020 } 1021 } 1022 if (! isInline) { 1023 // temporary: warn about anonymous member declarations of named types, since this conflicts with the syntax for the forward declaration of an anonymous type 1002 if ( ! cur->get_inLine() ) { 1003 // temporary: warn about anonymous member declarations of named types, since 1004 // this conflicts with the syntax for the forward declaration of an anonymous type 1024 1005 SemanticWarning( cur->location, Warning::AggrForwardDecl, aggr->name.c_str() ); 1025 } 1026 } 1027 } 1028 } 1029 } 1006 } // if 1007 } // if 1008 } // if 1009 } // if 1010 } // if 1030 1011 decl->location = cur->location; 1031 * 1032 } 1012 *out++ = decl; 1013 } // if 1033 1014 } // if 1034 } catch( SemanticErrorException & e ) {1015 } catch( SemanticErrorException & e ) { 1035 1016 errors.append( e ); 1036 1017 } // try 1037 } // while1018 } // for 1038 1019 1039 1020 if ( ! errors.isEmpty() ) { … … 1043 1024 1044 1025 // currently only builds assertions, function parameters, and return values 1045 void buildList( const DeclarationNode * firstNode, std::list< DeclarationWithType * > & outputList ) {1026 void buildList( const DeclarationNode * firstNode, std::list< DeclarationWithType * > & outputList ) { 1046 1027 SemanticErrorException errors; 1047 1028 std::back_insert_iterator< std::list< DeclarationWithType * > > out( outputList ); … … 1074 1055 * out++ = obj; 1075 1056 } // if 1076 } catch( SemanticErrorException & e ) {1057 } catch( SemanticErrorException & e ) { 1077 1058 errors.append( e ); 1078 1059 } // try … … 1084 1065 } // buildList 1085 1066 1086 void buildTypeList( const DeclarationNode * firstNode, std::list< Type * > & outputList ) {1067 void buildTypeList( const DeclarationNode * firstNode, std::list< Type * > & outputList ) { 1087 1068 SemanticErrorException errors; 1088 1069 std::back_insert_iterator< std::list< Type * > > out( outputList ); … … 1092 1073 try { 1093 1074 * out++ = cur->buildType(); 1094 } catch( SemanticErrorException & e ) {1075 } catch( SemanticErrorException & e ) { 1095 1076 errors.append( e ); 1096 1077 } // try -
src/Parser/ParseNode.h
rcbdf565 r2514607d 10 10 // Created On : Sat May 16 13:28:16 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Jun 6 16:17:18201813 // Update Count : 8 4312 // Last Modified On : Fri Jul 20 14:56:30 2018 13 // Update Count : 850 14 14 // 15 15 … … 68 68 } 69 69 70 virtual void print( __attribute__((unused)) std::ostream & os, __attribute__((unused)) int indent = 0 ) const {}71 virtual void printList( std::ostream & os, int indent = 0 ) const {70 virtual void print( __attribute__((unused)) std::ostream & os, __attribute__((unused)) int indent = 0 ) const {} 71 virtual void printList( std::ostream & os, int indent = 0 ) const { 72 72 print( os, indent ); 73 73 if ( next ) next->print( os, indent ); … … 103 103 InitializerNode * next_init() const { return kids; } 104 104 105 void print( std::ostream & os, int indent = 0 ) const;105 void print( std::ostream & os, int indent = 0 ) const; 106 106 void printOneLine( std::ostream & ) const; 107 107 … … 127 127 ExpressionNode * set_extension( bool exten ) { extension = exten; return this; } 128 128 129 virtual void print( std::ostream & os, __attribute__((unused)) int indent = 0 ) const override {130 os << expr.get() << std::endl;131 } 132 void printOneLine( __attribute__((unused)) std::ostream & os, __attribute__((unused)) int indent = 0 ) const {}129 virtual void print( std::ostream & os, __attribute__((unused)) int indent = 0 ) const override { 130 os << expr.get(); 131 } 132 void printOneLine( __attribute__((unused)) std::ostream & os, __attribute__((unused)) int indent = 0 ) const {} 133 133 134 134 template<typename T> … … 290 290 } 291 291 292 virtual void print( __attribute__((unused)) std::ostream & os, __attribute__((unused)) int indent = 0 ) const override;293 virtual void printList( __attribute__((unused)) std::ostream & os, __attribute__((unused)) int indent = 0 ) const override;292 virtual void print( __attribute__((unused)) std::ostream & os, __attribute__((unused)) int indent = 0 ) const override; 293 virtual void printList( __attribute__((unused)) std::ostream & os, __attribute__((unused)) int indent = 0 ) const override; 294 294 295 295 Declaration * build() const; … … 303 303 bool get_extension() const { return extension; } 304 304 DeclarationNode * set_extension( bool exten ) { extension = exten; return this; } 305 306 bool get_inLine() const { return inLine; } 307 DeclarationNode * set_inLine( bool inL ) { inLine = inL; return this; } 305 308 public: 306 309 DeclarationNode * get_last() { return (DeclarationNode *)ParseNode::get_last(); } … … 327 330 StaticAssert_t assert; 328 331 329 BuiltinType builtin; 330 331 TypeData * type; 332 332 BuiltinType builtin = NoBuiltinType; 333 334 TypeData * type = nullptr; 335 336 bool inLine = false; 333 337 Type::FuncSpecifiers funcSpecs; 334 338 Type::StorageClasses storageClasses; 335 339 336 ExpressionNode * bitfieldWidth ;340 ExpressionNode * bitfieldWidth = nullptr; 337 341 std::unique_ptr<ExpressionNode> enumeratorValue; 338 bool hasEllipsis ;342 bool hasEllipsis = false; 339 343 LinkageSpec::Spec linkage; 340 Expression * asmName ;344 Expression * asmName = nullptr; 341 345 std::list< Attribute * > attributes; 342 InitializerNode * initializer ;346 InitializerNode * initializer = nullptr; 343 347 bool extension = false; 344 348 std::string error; 345 StatementNode * asmStmt ;349 StatementNode * asmStmt = nullptr; 346 350 347 351 static UniqueName anonymous; … … 377 381 virtual StatementNode * append_last_case( StatementNode * ); 378 382 379 virtual void print( std::ostream & os, __attribute__((unused)) int indent = 0 ) const override {383 virtual void print( std::ostream & os, __attribute__((unused)) int indent = 0 ) const override { 380 384 os << stmt.get() << std::endl; 381 385 } … … 435 439 436 440 template< typename SynTreeType, typename NodeType, template< typename, typename...> class Container, typename... Args > 437 void buildList( const NodeType * firstNode, Container< SynTreeType *, Args... > & outputList ) {441 void buildList( const NodeType * firstNode, Container< SynTreeType *, Args... > & outputList ) { 438 442 SemanticErrorException errors; 439 443 std::back_insert_iterator< Container< SynTreeType *, Args... > > out( outputList ); … … 449 453 assertf(false, "buildList unknown type"); 450 454 } // if 451 } catch( SemanticErrorException & e ) {455 } catch( SemanticErrorException & e ) { 452 456 errors.append( e ); 453 457 } // try … … 460 464 461 465 // in DeclarationNode.cc 462 void buildList( const DeclarationNode * firstNode, std::list< Declaration * > & outputList );463 void buildList( const DeclarationNode * firstNode, std::list< DeclarationWithType * > & outputList );464 void buildTypeList( const DeclarationNode * firstNode, std::list< Type * > & outputList );466 void buildList( const DeclarationNode * firstNode, std::list< Declaration * > & outputList ); 467 void buildList( const DeclarationNode * firstNode, std::list< DeclarationWithType * > & outputList ); 468 void buildTypeList( const DeclarationNode * firstNode, std::list< Type * > & outputList ); 465 469 466 470 template< typename SynTreeType, typename NodeType > 467 void buildMoveList( const NodeType * firstNode, std::list< SynTreeType * > & outputList ) {471 void buildMoveList( const NodeType * firstNode, std::list< SynTreeType * > & outputList ) { 468 472 buildList( firstNode, outputList ); 469 473 delete firstNode; -
src/Parser/TypeData.cc
rcbdf565 r2514607d 10 10 // Created On : Sat May 16 15:12:51 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Jul 12 13:52:09201813 // Update Count : 6 0612 // Last Modified On : Fri Jul 20 14:39:31 2018 13 // Update Count : 622 14 14 // 15 15 … … 76 76 aggregate.parent = nullptr; 77 77 aggregate.anon = false; 78 aggregate.inLine = false;79 78 break; 80 79 case AggregateInst: … … 83 82 aggInst.params = nullptr; 84 83 aggInst.hoistType = false; 85 aggInst.inLine = false;86 84 break; 87 85 case Symbolic: … … 221 219 newtype->aggregate.body = aggregate.body; 222 220 newtype->aggregate.anon = aggregate.anon; 223 newtype->aggregate.inLine = aggregate.inLine;224 221 newtype->aggregate.tagged = aggregate.tagged; 225 222 newtype->aggregate.parent = aggregate.parent ? new string( *aggregate.parent ) : nullptr; … … 229 226 newtype->aggInst.params = maybeClone( aggInst.params ); 230 227 newtype->aggInst.hoistType = aggInst.hoistType; 231 newtype->aggInst.inLine = aggInst.inLine;232 228 break; 233 229 case Enum: … … 275 271 276 272 switch ( kind ) { 277 case Unknown: 278 os << "entity of unknown type "; 273 case Basic: 274 if ( signedness != DeclarationNode::NoSignedness ) os << DeclarationNode::signednessNames[ signedness ] << " "; 275 if ( length != DeclarationNode::NoLength ) os << DeclarationNode::lengthNames[ length ] << " "; 276 if ( complextype == DeclarationNode::NoComplexType ) { // basic type 277 assert( basictype != DeclarationNode::NoBasicType ); 278 os << DeclarationNode::basicTypeNames[ basictype ] << " "; 279 } else { // complex type 280 // handle double _Complex 281 if ( basictype != DeclarationNode::NoBasicType ) os << DeclarationNode::basicTypeNames[ basictype ] << " "; 282 os << DeclarationNode::complexTypeNames[ complextype ] << " "; 283 } // if 279 284 break; 280 285 case Pointer: … … 285 290 } // if 286 291 break; 287 case EnumConstant: 288 os << "enumeration constant "; 289 break; 290 case Basic: 291 if ( signedness != DeclarationNode::NoSignedness ) os << DeclarationNode::signednessNames[ signedness ] << " "; 292 if ( length != DeclarationNode::NoLength ) os << DeclarationNode::lengthNames[ length ] << " "; 293 assert( basictype != DeclarationNode::NoBasicType ); 294 os << DeclarationNode::basicTypeNames[ basictype ] << " "; 295 if ( complextype != DeclarationNode::NoComplexType ) os << DeclarationNode::complexTypeNames[ complextype ] << " "; 292 case Reference: 293 os << "reference "; 294 if ( base ) { 295 os << "to "; 296 base->print( os, indent ); 297 } // if 296 298 break; 297 299 case Array: … … 379 381 } // if 380 382 break; 381 case SymbolicInst: 382 os << "instance of type " << *symbolic.name; 383 if ( symbolic.actuals ) { 384 os << " with parameters" << endl; 385 symbolic.actuals->printList( os, indent + 2 ); 386 } // if 383 case EnumConstant: 384 os << "enumeration constant "; 387 385 break; 388 386 case Symbolic: … … 406 404 } // if 407 405 break; 406 case SymbolicInst: 407 os << *symbolic.name; 408 if ( symbolic.actuals ) { 409 os << "("; 410 symbolic.actuals->printList( os, indent + 2 ); 411 os << ")"; 412 } // if 413 break; 408 414 case Tuple: 409 415 os << "tuple "; … … 421 427 case Builtin: 422 428 os << DeclarationNode::builtinTypeNames[builtintype]; 429 break; 430 case GlobalScope: 431 break; 432 case Qualified: 433 qualified.parent->print( os ); 434 os << "."; 435 qualified.child->print( os ); 436 break; 437 case Unknown: 438 os << "entity of unknown type "; 423 439 break; 424 440 default: -
src/Parser/TypeData.h
rcbdf565 r2514607d 10 10 // Created On : Sat May 16 15:18:36 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Jul 12 14:00:09201813 // Update Count : 19 312 // Last Modified On : Fri Jul 20 13:56:40 2018 13 // Update Count : 195 14 14 // 15 15 … … 26 26 27 27 struct TypeData { 28 enum Kind { Basic, Pointer, Array, Reference, Function, Aggregate, AggregateInst, Enum, EnumConstant, Symbolic,28 enum Kind { Basic, Pointer, Reference, Array, Function, Aggregate, AggregateInst, Enum, EnumConstant, Symbolic, 29 29 SymbolicInst, Tuple, Typeof, Builtin, GlobalScope, Qualified, Unknown }; 30 30 … … 37 37 bool body; 38 38 bool anon; 39 bool inLine;40 39 41 40 bool tagged; … … 47 46 ExpressionNode * params; 48 47 bool hoistType; 49 bool inLine;50 48 }; 51 49 … … 79 77 }; 80 78 81 struct Qualified_t { 79 struct Qualified_t { // qualified type S.T 82 80 TypeData * parent; 83 81 TypeData * child; -
src/Parser/parser.yy
rcbdf565 r2514607d 10 10 // Created On : Sat Sep 1 20:22:55 2001 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Jul 12 16:16:25201813 // Update Count : 3 75612 // Last Modified On : Fri Jul 20 11:46:46 2018 13 // Update Count : 3837 14 14 // 15 15 … … 114 114 } // for 115 115 } // distExt 116 117 void distInl( DeclarationNode * declaration ) { 118 // distribute EXTENSION across all declarations 119 for ( DeclarationNode *iter = declaration; iter != nullptr; iter = (DeclarationNode *)iter->get_next() ) { 120 iter->set_inLine( true ); 121 } // for 122 } // distInl 116 123 117 124 void distQual( DeclarationNode * declaration, DeclarationNode * qualifiers ) { … … 166 173 } // build_postfix_name 167 174 175 DeclarationNode * fieldDecl( DeclarationNode * typeSpec, DeclarationNode * fieldList ) { 176 if ( ! fieldList ) { // field declarator ? 177 if ( ! ( typeSpec->type && typeSpec->type->kind == TypeData::Aggregate ) ) { 178 stringstream ss; 179 typeSpec->type->print( ss ); 180 SemanticWarning( yylloc, Warning::SuperfluousDecl, ss.str().c_str() ); 181 return nullptr; 182 } // if 183 fieldList = DeclarationNode::newName( nullptr ); 184 } // if 185 return distAttr( typeSpec, fieldList ); // mark all fields in list 186 } // fieldDecl 187 168 188 bool forall = false, yyy = false; // aggregate have one or more forall qualifiers ? 169 189 … … 338 358 %type<decl> exception_declaration 339 359 340 %type<decl> field_declaration field_declaration_list_opt field_declarator_opt field_declaring_list341 %type<en> field field_ list field_name fraction_constants_opt360 %type<decl> field_declaration_list_opt field_declaration field_declaring_list_opt field_declarator field_abstract_list_opt field_abstract 361 %type<en> field field_name_list field_name fraction_constants_opt 342 362 343 363 %type<decl> external_function_definition function_definition function_array function_declarator function_no_ptr function_ptr … … 352 372 %type<decl> cfa_array_parameter_1st_dimension 353 373 354 %type<decl> cfa_trait_declaring_list cfa_declaration cfa_field_declaring_list 374 %type<decl> cfa_trait_declaring_list cfa_declaration cfa_field_declaring_list cfa_field_abstract_list 355 375 %type<decl> cfa_function_declaration cfa_function_return cfa_function_specifier 356 376 … … 492 512 ; 493 513 494 identifier:495 IDENTIFIER496 | ATTR_IDENTIFIER // CFA497 | quasi_keyword498 ;499 500 514 no_attr_identifier: 501 515 IDENTIFIER 502 516 | quasi_keyword 517 | '@' // CFA 518 { Token tok = { new string( DeclarationNode::anonymous.newName() ), yylval.tok.loc }; $$ = tok; } 519 ; 520 521 identifier: 522 no_attr_identifier 523 | ATTR_IDENTIFIER // CFA 503 524 ; 504 525 … … 541 562 | type_name '.' no_attr_identifier // CFA, nested type 542 563 { SemanticError( yylloc, "Qualified name is currently unimplemented." ); $$ = nullptr; } 543 | type_name '.' '[' field_ list ']'// CFA, nested type / tuple field selector564 | type_name '.' '[' field_name_list ']' // CFA, nested type / tuple field selector 544 565 { SemanticError( yylloc, "Qualified name is currently unimplemented." ); $$ = nullptr; } 545 566 | GENERIC '(' assignment_expression ',' generic_assoc_list ')' // C11 … … 594 615 | postfix_expression FLOATING_FRACTIONconstant // CFA, tuple index 595 616 { $$ = new ExpressionNode( build_fieldSel( $1, build_field_name_FLOATING_FRACTIONconstant( *$2 ) ) ); } 596 | postfix_expression '.' '[' field_ list ']'// CFA, tuple field selector617 | postfix_expression '.' '[' field_name_list ']' // CFA, tuple field selector 597 618 { $$ = new ExpressionNode( build_fieldSel( $1, build_tuple( $4 ) ) ); } 598 619 | postfix_expression ARROW no_attr_identifier … … 602 623 | postfix_expression ARROW INTEGERconstant // CFA, tuple index 603 624 { $$ = new ExpressionNode( build_pfieldSel( $1, build_constantInteger( *$3 ) ) ); } 604 | postfix_expression ARROW '[' field_ list ']'// CFA, tuple field selector625 | postfix_expression ARROW '[' field_name_list ']' // CFA, tuple field selector 605 626 { $$ = new ExpressionNode( build_pfieldSel( $1, build_tuple( $4 ) ) ); } 606 627 | postfix_expression ICR … … 629 650 // empty 630 651 { $$ = nullptr; } 631 // | '@' // use default argument 632 // { $$ = new ExpressionNode( build_constantInteger( *new string( "2" ) ) ); } 652 | '?' // CFA, default parameter 653 { SemanticError( yylloc, "Default parameter for argument is currently unimplemented." ); $$ = nullptr; } 654 // { $$ = new ExpressionNode( build_constantInteger( *new string( "2" ) ) ); } 633 655 | assignment_expression 634 656 ; 635 657 636 field_ list:// CFA, tuple field selector658 field_name_list: // CFA, tuple field selector 637 659 field 638 | field_ list ',' field{ $$ = (ExpressionNode *)$1->set_last( $3 ); }660 | field_name_list ',' field { $$ = (ExpressionNode *)$1->set_last( $3 ); } 639 661 ; 640 662 … … 643 665 | FLOATING_DECIMALconstant field 644 666 { $$ = new ExpressionNode( build_fieldSel( new ExpressionNode( build_field_name_FLOATING_DECIMALconstant( *$1 ) ), maybeMoveBuild<Expression>( $2 ) ) ); } 645 | FLOATING_DECIMALconstant '[' field_ list ']'667 | FLOATING_DECIMALconstant '[' field_name_list ']' 646 668 { $$ = new ExpressionNode( build_fieldSel( new ExpressionNode( build_field_name_FLOATING_DECIMALconstant( *$1 ) ), build_tuple( $3 ) ) ); } 647 669 | field_name '.' field 648 670 { $$ = new ExpressionNode( build_fieldSel( $1, maybeMoveBuild<Expression>( $3 ) ) ); } 649 | field_name '.' '[' field_ list ']'671 | field_name '.' '[' field_name_list ']' 650 672 { $$ = new ExpressionNode( build_fieldSel( $1, build_tuple( $4 ) ) ); } 651 673 | field_name ARROW field 652 674 { $$ = new ExpressionNode( build_pfieldSel( $1, maybeMoveBuild<Expression>( $3 ) ) ); } 653 | field_name ARROW '[' field_ list ']'675 | field_name ARROW '[' field_name_list ']' 654 676 { $$ = new ExpressionNode( build_pfieldSel( $1, build_tuple( $4 ) ) ); } 655 677 ; … … 1932 1954 1933 1955 field_declaration: 1934 type_specifier field_declaring_list ';' 1935 { $$ = distAttr( $1, $2 ); } 1936 | EXTENSION type_specifier field_declaring_list ';' // GCC 1937 { distExt( $3 ); $$ = distAttr( $2, $3 ); } // mark all fields in list 1938 | INLINE type_specifier field_declaring_list ';' // CFA 1939 { 1940 if ( $2->type && ( $2->type->kind == TypeData::Aggregate || $2->type->kind == TypeData::AggregateInst ) ) { 1941 if ( $2->type->kind == TypeData::Aggregate ) { 1942 $2->type->aggregate.inLine = true; 1943 } else { 1944 $2->type->aggInst.inLine = true; 1945 } // if 1946 $$ = distAttr( $2, $3 ); 1947 } else { 1948 SemanticError( yylloc, "inline qualifier only allowed for aggregate field declarations." ); $$ = nullptr; 1949 } // if 1956 type_specifier field_declaring_list_opt ';' 1957 { $$ = fieldDecl( $1, $2 ); } 1958 | EXTENSION type_specifier field_declaring_list_opt ';' // GCC 1959 { $$ = fieldDecl( $2, $3 ); distExt( $$ ); } 1960 | INLINE type_specifier field_abstract_list_opt ';' // CFA 1961 { 1962 if ( ! $3 ) { // field declarator ? 1963 $3 = DeclarationNode::newName( nullptr ); 1964 } // if 1965 $3->inLine = true; 1966 $$ = distAttr( $2, $3 ); // mark all fields in list 1967 distInl( $3 ); 1950 1968 } 1951 1969 | typedef_declaration ';' // CFA … … 1953 1971 | EXTENSION cfa_field_declaring_list ';' // GCC 1954 1972 { distExt( $2 ); $$ = $2; } // mark all fields in list 1973 | INLINE cfa_field_abstract_list ';' // CFA, new style field declaration 1974 { $$ = $2; } // mark all fields in list 1955 1975 | cfa_typedef_declaration ';' // CFA 1956 1976 | static_assert // C11 1957 1977 ; 1958 1978 1979 field_declaring_list_opt: 1980 // empty 1981 { $$ = nullptr; } 1982 | field_declarator 1983 | field_declaring_list_opt ',' attribute_list_opt field_declarator 1984 { $$ = $1->appendList( $4->addQualifiers( $3 ) ); } 1985 ; 1986 1987 field_declarator: 1988 bit_subrange_size // C special case, no field name 1989 { $$ = DeclarationNode::newBitfield( $1 ); } 1990 | variable_declarator bit_subrange_size_opt 1991 // A semantic check is required to ensure bit_subrange only appears on integral types. 1992 { $$ = $1->addBitfield( $2 ); } 1993 | variable_type_redeclarator bit_subrange_size_opt 1994 // A semantic check is required to ensure bit_subrange only appears on integral types. 1995 { $$ = $1->addBitfield( $2 ); } 1996 ; 1997 1998 field_abstract_list_opt: 1999 // empty 2000 { $$ = nullptr; } 2001 | field_abstract 2002 | field_abstract_list_opt ',' attribute_list_opt field_abstract 2003 { $$ = $1->appendList( $4->addQualifiers( $3 ) ); } 2004 ; 2005 2006 field_abstract: 2007 // no bit fields 2008 variable_abstract_declarator 2009 ; 2010 1959 2011 cfa_field_declaring_list: // CFA, new style field declaration 1960 cfa_abstract_declarator_tuple // CFA, no field name1961 |cfa_abstract_declarator_tuple no_attr_identifier_or_type_name2012 // bit-fields are handled by C declarations 2013 cfa_abstract_declarator_tuple no_attr_identifier_or_type_name 1962 2014 { $$ = $1->addName( $2 ); } 1963 2015 | cfa_field_declaring_list ',' no_attr_identifier_or_type_name 1964 2016 { $$ = $1->appendList( $1->cloneType( $3 ) ); } 1965 | cfa_field_declaring_list ',' // CFA, no field name 2017 ; 2018 2019 cfa_field_abstract_list: // CFA, new style field declaration 2020 // bit-fields are handled by C declarations 2021 cfa_abstract_declarator_tuple 2022 | cfa_field_abstract_list ',' 1966 2023 { $$ = $1->appendList( $1->cloneType( 0 ) ); } 1967 ;1968 1969 field_declaring_list:1970 field_declarator_opt1971 | field_declaring_list ',' attribute_list_opt field_declarator_opt1972 { $$ = $1->appendList( $4->addQualifiers( $3 ) ); }1973 ;1974 1975 field_declarator_opt:1976 // empty1977 { $$ = DeclarationNode::newName( 0 ); /* XXX */ } // CFA, no field name1978 // '@'1979 // { $$ = DeclarationNode::newName( new string( DeclarationNode::anonymous.newName() ) ); } // CFA, no field name1980 | bit_subrange_size // no field name1981 { $$ = DeclarationNode::newBitfield( $1 ); }1982 | variable_declarator bit_subrange_size_opt1983 // A semantic check is required to ensure bit_subrange only appears on base type int.1984 { $$ = $1->addBitfield( $2 ); }1985 | variable_type_redeclarator bit_subrange_size_opt1986 // A semantic check is required to ensure bit_subrange only appears on base type int.1987 { $$ = $1->addBitfield( $2 ); }1988 | variable_abstract_declarator // CFA, no field name1989 2024 ; 1990 2025 … … 2226 2261 | '[' push constant_expression ELLIPSIS constant_expression pop ']' // GCC, multiple array elements 2227 2262 { $$ = new ExpressionNode( new RangeExpr( maybeMoveBuild< Expression >( $3 ), maybeMoveBuild< Expression >( $5 ) ) ); } 2228 | '.' '[' push field_ list pop ']'// CFA, tuple field selector2263 | '.' '[' push field_name_list pop ']' // CFA, tuple field selector 2229 2264 { $$ = $4; } 2230 2265 ; -
src/SymTab/Validate.cc
rcbdf565 r2514607d 368 368 auto base = td->base; 369 369 assert( base ); 370 return base->clone(); 370 Type * ret = base->clone(); 371 ret->get_qualifiers() = qualType->get_qualifiers(); 372 return ret; 371 373 } else { 372 374 // .T => T is not a type name … … 388 390 if ( StructDecl * aggr = dynamic_cast< StructDecl * >( member ) ) { 389 391 if ( aggr->name == inst->name ) { 392 // TODO: is this case, and other non-TypeInstType cases, necessary? 390 393 return new StructInstType( qualType->get_qualifiers(), aggr ); 391 394 } … … 404 407 } 405 408 } else if ( TypeInstType * inst = dynamic_cast< TypeInstType * >( child ) ) { 406 // struct typedefs are being replaced by forward decls too early; move it to hoist struct409 // name on the right is a typedef 407 410 if ( NamedTypeDecl * aggr = dynamic_cast< NamedTypeDecl * > ( member ) ) { 408 411 if ( aggr->name == inst->name ) { 409 412 assert( aggr->base ); 410 return aggr->base->clone(); 413 Type * ret = aggr->base->clone(); 414 ret->get_qualifiers() = qualType->get_qualifiers(); 415 return ret; 411 416 } 412 417 } -
src/driver/cc1.cc
rcbdf565 r2514607d 10 10 // Created On : Fri Aug 26 14:23:51 2005 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Jul 13 17:40:10201813 // Update Count : 11 012 // Last Modified On : Thu Jul 19 10:46:11 2018 13 // Update Count : 111 14 14 // 15 15 … … 454 454 args[nargs] = argv[i]; // pass the argument along 455 455 nargs += 1; 456 #ifdef __DEBUG_H__456 #ifdef __DEBUG_H__ 457 457 cerr << "arg:\"" << argv[i] << "\"" << endl; 458 #endif // __DEBUG_H__458 #endif // __DEBUG_H__ 459 459 } // if 460 460 } // if -
src/libcfa/concurrency/kernel.c
rcbdf565 r2514607d 37 37 38 38 //Start and stop routine for the kernel, declared first to make sure they run first 39 void kernel_startup(void) __attribute__(( constructor( STARTUP_PRIORITY_KERNEL ) ));40 void kernel_shutdown(void) __attribute__(( destructor ( STARTUP_PRIORITY_KERNEL ) ));39 static void kernel_startup(void) __attribute__(( constructor( STARTUP_PRIORITY_KERNEL ) )); 40 static void kernel_shutdown(void) __attribute__(( destructor ( STARTUP_PRIORITY_KERNEL ) )); 41 41 42 42 //----------------------------------------------------------------------------- … … 133 133 134 134 // Construct the processor context of non-main processors 135 void ?{}(processorCtx_t & this, processor * proc, current_stack_info_t * info) {135 static void ?{}(processorCtx_t & this, processor * proc, current_stack_info_t * info) { 136 136 (this.__cor){ info }; 137 137 this.proc = proc; 138 138 } 139 139 140 static void start(processor * this); 140 141 void ?{}(processor & this, const char * name, cluster & cltr) with( this ) { 141 142 this.name = name; … … 186 187 // Kernel Scheduling logic 187 188 //============================================================================================= 189 static void runThread(processor * this, thread_desc * dst); 190 static void finishRunning(processor * this); 191 static void halt(processor * this); 192 188 193 //Main of the processor contexts 189 194 void main(processorCtx_t & runner) { … … 239 244 // runThread runs a thread by context switching 240 245 // from the processor coroutine to the target thread 241 void runThread(processor * this, thread_desc * dst) {246 static void runThread(processor * this, thread_desc * dst) { 242 247 assert(dst->curr_cor); 243 248 coroutine_desc * proc_cor = get_coroutine(this->runner); … … 256 261 257 262 // KERNEL_ONLY 258 void returnToKernel() {263 static void returnToKernel() { 259 264 coroutine_desc * proc_cor = get_coroutine(kernelTLS.this_processor->runner); 260 265 coroutine_desc * thrd_cor = kernelTLS.this_thread->curr_cor = kernelTLS.this_coroutine; … … 265 270 // Once a thread has finished running, some of 266 271 // its final actions must be executed from the kernel 267 void finishRunning(processor * this) with( this->finish ) {272 static void finishRunning(processor * this) with( this->finish ) { 268 273 verify( ! kernelTLS.preemption_state.enabled ); 269 274 choose( action_code ) { … … 299 304 // This is the entry point for processors (kernel threads) 300 305 // It effectively constructs a coroutine by stealing the pthread stack 301 void * CtxInvokeProcessor(void * arg) {306 static void * CtxInvokeProcessor(void * arg) { 302 307 processor * proc = (processor *) arg; 303 308 kernelTLS.this_processor = proc; … … 336 341 } 337 342 338 void start(processor * this) {343 static void start(processor * this) { 339 344 __cfaabi_dbg_print_safe("Kernel : Starting core %p\n", this); 340 345 … … 542 547 //----------------------------------------------------------------------------- 543 548 // Kernel boot procedures 544 void kernel_startup(void) {549 static void kernel_startup(void) { 545 550 verify( ! kernelTLS.preemption_state.enabled ); 546 551 __cfaabi_dbg_print_safe("Kernel : Starting\n"); … … 618 623 } 619 624 620 void kernel_shutdown(void) {625 static void kernel_shutdown(void) { 621 626 __cfaabi_dbg_print_safe("\n--------------------------------------------------\nKernel : Shutting down\n"); 622 627 … … 655 660 // Kernel Quiescing 656 661 //============================================================================================= 657 658 void halt(processor * this) with( *this ) { 662 static void halt(processor * this) with( *this ) { 659 663 // verify( ! __atomic_load_n(&do_terminate, __ATOMIC_SEQ_CST) ); 660 664 … … 683 687 // Unexpected Terminating logic 684 688 //============================================================================================= 685 686 687 689 static __spinlock_t kernel_abort_lock; 688 690 static bool kernel_abort_called = false; -
src/libcfa/concurrency/kernel_private.h
rcbdf565 r2514607d 54 54 // Processor 55 55 void main(processorCtx_t *); 56 void start(processor * this);57 void runThread(processor * this, thread_desc * dst);58 void finishRunning(processor * this);59 void halt(processor * this);60 56 61 57 static inline void wake_fast(processor * this) { -
src/libcfa/concurrency/preemption.c
rcbdf565 r2514607d 39 39 40 40 // FwdDeclarations : Signal handlers 41 void sigHandler_ctxSwitch( __CFA_SIGPARMS__ );42 void sigHandler_segv ( __CFA_SIGPARMS__ );43 void sigHandler_ill ( __CFA_SIGPARMS__ );44 void sigHandler_fpe ( __CFA_SIGPARMS__ );45 void sigHandler_abort ( __CFA_SIGPARMS__ );41 static void sigHandler_ctxSwitch( __CFA_SIGPARMS__ ); 42 static void sigHandler_segv ( __CFA_SIGPARMS__ ); 43 static void sigHandler_ill ( __CFA_SIGPARMS__ ); 44 static void sigHandler_fpe ( __CFA_SIGPARMS__ ); 45 static void sigHandler_abort ( __CFA_SIGPARMS__ ); 46 46 47 47 // FwdDeclarations : alarm thread main 48 void * alarm_loop( __attribute__((unused)) void * args );48 static void * alarm_loop( __attribute__((unused)) void * args ); 49 49 50 50 // Machine specific register name … … 63 63 static pthread_t alarm_thread; // pthread handle to alarm thread 64 64 65 void ?{}(event_kernel_t & this) with( this ) {65 static void ?{}(event_kernel_t & this) with( this ) { 66 66 alarms{}; 67 67 lock{}; … … 85 85 86 86 // Tick one frame of the Discrete Event Simulation for alarms 87 void tick_preemption() {87 static void tick_preemption() { 88 88 alarm_node_t * node = NULL; // Used in the while loop but cannot be declared in the while condition 89 89 alarm_list_t * alarms = &event_kernel->alarms; // Local copy for ease of reading … … 350 350 // Context switch signal handler 351 351 // Receives SIGUSR1 signal and causes the current thread to yield 352 void sigHandler_ctxSwitch( __CFA_SIGPARMS__ ) {352 static void sigHandler_ctxSwitch( __CFA_SIGPARMS__ ) { 353 353 __cfaabi_dbg_debug_do( last_interrupt = (void *)(cxt->uc_mcontext.CFA_REG_IP); ) 354 354 … … 393 393 // Main of the alarm thread 394 394 // Waits on SIGALRM and send SIGUSR1 to whom ever needs it 395 void * alarm_loop( __attribute__((unused)) void * args ) {395 static void * alarm_loop( __attribute__((unused)) void * args ) { 396 396 // Block sigalrms to control when they arrive 397 397 sigset_t mask; -
src/libcfa/concurrency/preemption.h
rcbdf565 r2514607d 22 22 void kernel_stop_preemption(); 23 23 void update_preemption( processor * this, Duration duration ); 24 void tick_preemption();25 24 26 25 struct preemption_scope { -
src/tests/.expect/attributes.x64.txt
rcbdf565 r2514607d 88 88 __attribute__ ((used,unused,unused)) signed int __f7__i_1; 89 89 __attribute__ ((used,used,unused)) signed int __f8__i_1; 90 __attribute__ ((unused)) signed int __anonymous_object0;91 90 __attribute__ ((unused,unused)) signed int *__f9__Pi_1; 92 91 }; … … 103 102 static inline void ___constructor__F_4sFdliiiiiii_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1, __attribute__ ((unused)) signed int __f4__i_1, __attribute__ ((unused,unused)) signed int __f5__i_1, signed int __f6__i_1, __attribute__ ((unused,unused)) signed int __f7__i_1); 104 103 static inline void ___constructor__F_4sFdliiiiiiii_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1, __attribute__ ((unused)) signed int __f4__i_1, __attribute__ ((unused,unused)) signed int __f5__i_1, signed int __f6__i_1, __attribute__ ((unused,unused)) signed int __f7__i_1, __attribute__ ((unused)) signed int __f8__i_1); 105 static inline void ___constructor__F_4sFdliiiiiiiii_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1, __attribute__ ((unused)) signed int __f4__i_1, __attribute__ ((unused,unused)) signed int __f5__i_1, signed int __f6__i_1, __attribute__ ((unused,unused)) signed int __f7__i_1, __attribute__ ((unused)) signed int __f8__i_1, __attribute__ ((unused)) signed int __anonymous_object1); 106 static inline void ___constructor__F_4sFdliiiiiiiiiPi_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1, __attribute__ ((unused)) signed int __f4__i_1, __attribute__ ((unused,unused)) signed int __f5__i_1, signed int __f6__i_1, __attribute__ ((unused,unused)) signed int __f7__i_1, __attribute__ ((unused)) signed int __f8__i_1, __attribute__ ((unused)) signed int __anonymous_object2, __attribute__ ((unused,unused)) signed int *__f9__Pi_1); 104 static inline void ___constructor__F_4sFdliiiiiiiiPi_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1, __attribute__ ((unused)) signed int __f4__i_1, __attribute__ ((unused,unused)) signed int __f5__i_1, signed int __f6__i_1, __attribute__ ((unused,unused)) signed int __f7__i_1, __attribute__ ((unused)) signed int __f8__i_1, __attribute__ ((unused,unused)) signed int *__f9__Pi_1); 107 105 static inline void ___constructor__F_4sFdl_autogen___1(struct Fdl *___dst__4sFdl_1){ 108 106 ((void)((*___dst__4sFdl_1).__f1__i_1) /* ?{} */); … … 114 112 ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */); 115 113 ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */); 116 ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ?{} */);117 114 ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */); 118 115 } … … 126 123 ((void)((*___dst__4sFdl_1).__f7__i_1=___src__4sFdl_1.__f7__i_1) /* ?{} */); 127 124 ((void)((*___dst__4sFdl_1).__f8__i_1=___src__4sFdl_1.__f8__i_1) /* ?{} */); 128 ((void)((*___dst__4sFdl_1).__anonymous_object0=___src__4sFdl_1.__anonymous_object0) /* ?{} */);129 125 ((void)((*___dst__4sFdl_1).__f9__Pi_1=___src__4sFdl_1.__f9__Pi_1) /* ?{} */); 130 126 } 131 127 static inline void ___destructor__F_4sFdl_autogen___1(struct Fdl *___dst__4sFdl_1){ 132 128 ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ^?{} */); 133 ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ^?{} */);134 129 ((void)((*___dst__4sFdl_1).__f8__i_1) /* ^?{} */); 135 130 ((void)((*___dst__4sFdl_1).__f7__i_1) /* ^?{} */); … … 151 146 ((void)((*___dst__4sFdl_1).__f7__i_1=___src__4sFdl_1.__f7__i_1)); 152 147 ((void)((*___dst__4sFdl_1).__f8__i_1=___src__4sFdl_1.__f8__i_1)); 153 ((void)((*___dst__4sFdl_1).__anonymous_object0=___src__4sFdl_1.__anonymous_object0));154 148 ((void)((*___dst__4sFdl_1).__f9__Pi_1=___src__4sFdl_1.__f9__Pi_1)); 155 149 ((void)___constructor__F_4sFdl4sFdl_autogen___1((&___ret__4sFdl_1), (*___dst__4sFdl_1))); … … 165 159 ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */); 166 160 ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */); 167 ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ?{} */);168 161 ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */); 169 162 } … … 177 170 ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */); 178 171 ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */); 179 ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ?{} */);180 172 ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */); 181 173 } … … 189 181 ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */); 190 182 ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */); 191 ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ?{} */);192 183 ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */); 193 184 } … … 201 192 ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */); 202 193 ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */); 203 ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ?{} */);204 194 ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */); 205 195 } … … 213 203 ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */); 214 204 ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */); 215 ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ?{} */);216 205 ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */); 217 206 } … … 225 214 ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */); 226 215 ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */); 227 ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ?{} */);228 216 ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */); 229 217 } … … 237 225 ((void)((*___dst__4sFdl_1).__f7__i_1=__f7__i_1) /* ?{} */); 238 226 ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */); 239 ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ?{} */);240 227 ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */); 241 228 } … … 249 236 ((void)((*___dst__4sFdl_1).__f7__i_1=__f7__i_1) /* ?{} */); 250 237 ((void)((*___dst__4sFdl_1).__f8__i_1=__f8__i_1) /* ?{} */); 251 ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ?{} */); 252 ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */); 253 } 254 static inline void ___constructor__F_4sFdliiiiiiiii_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1, __attribute__ ((unused)) signed int __f4__i_1, __attribute__ ((unused,unused)) signed int __f5__i_1, signed int __f6__i_1, __attribute__ ((unused,unused)) signed int __f7__i_1, __attribute__ ((unused)) signed int __f8__i_1, __attribute__ ((unused)) signed int __anonymous_object3){ 238 ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */); 239 } 240 static inline void ___constructor__F_4sFdliiiiiiiiPi_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1, __attribute__ ((unused)) signed int __f4__i_1, __attribute__ ((unused,unused)) signed int __f5__i_1, signed int __f6__i_1, __attribute__ ((unused,unused)) signed int __f7__i_1, __attribute__ ((unused)) signed int __f8__i_1, __attribute__ ((unused,unused)) signed int *__f9__Pi_1){ 255 241 ((void)((*___dst__4sFdl_1).__f1__i_1=__f1__i_1) /* ?{} */); 256 242 ((void)((*___dst__4sFdl_1).__f2__i_1=__f2__i_1) /* ?{} */); … … 261 247 ((void)((*___dst__4sFdl_1).__f7__i_1=__f7__i_1) /* ?{} */); 262 248 ((void)((*___dst__4sFdl_1).__f8__i_1=__f8__i_1) /* ?{} */); 263 ((void)((*___dst__4sFdl_1).__anonymous_object0=__anonymous_object3) /* ?{} */);264 ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */);265 }266 static inline void ___constructor__F_4sFdliiiiiiiiiPi_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1, __attribute__ ((unused)) signed int __f4__i_1, __attribute__ ((unused,unused)) signed int __f5__i_1, signed int __f6__i_1, __attribute__ ((unused,unused)) signed int __f7__i_1, __attribute__ ((unused)) signed int __f8__i_1, __attribute__ ((unused)) signed int __anonymous_object4, __attribute__ ((unused,unused)) signed int *__f9__Pi_1){267 ((void)((*___dst__4sFdl_1).__f1__i_1=__f1__i_1) /* ?{} */);268 ((void)((*___dst__4sFdl_1).__f2__i_1=__f2__i_1) /* ?{} */);269 ((void)((*___dst__4sFdl_1).__f3__i_1=__f3__i_1) /* ?{} */);270 ((void)((*___dst__4sFdl_1).__f4__i_1=__f4__i_1) /* ?{} */);271 ((void)((*___dst__4sFdl_1).__f5__i_1=__f5__i_1) /* ?{} */);272 ((void)((*___dst__4sFdl_1).__f6__i_1=__f6__i_1) /* ?{} */);273 ((void)((*___dst__4sFdl_1).__f7__i_1=__f7__i_1) /* ?{} */);274 ((void)((*___dst__4sFdl_1).__f8__i_1=__f8__i_1) /* ?{} */);275 ((void)((*___dst__4sFdl_1).__anonymous_object0=__anonymous_object4) /* ?{} */);276 249 ((void)((*___dst__4sFdl_1).__f9__Pi_1=__f9__Pi_1) /* ?{} */); 277 250 } … … 293 266 __attribute__ ((unused)) signed int **const ___retval_f2__CPPi_1; 294 267 } 295 __attribute__ ((unused,used,unused)) signed int (*__f3__FPA0i_i__1(signed int __anonymous_object 5))[];268 __attribute__ ((unused,used,unused)) signed int (*__f3__FPA0i_i__1(signed int __anonymous_object0))[]; 296 269 __attribute__ ((unused,unused)) signed int (*__f3__FPA0i_i__1(signed int __p__i_1))[]{ 297 270 __attribute__ ((unused)) signed int (*___retval_f3__PA0i_1)[]; 298 271 } 299 __attribute__ ((unused,used,unused)) signed int (*__f4__FFi_i____1())(signed int __anonymous_object 6);300 __attribute__ ((unused,unused)) signed int (*__f4__FFi_i____1())(signed int __anonymous_object 7){301 __attribute__ ((unused)) signed int (*___retval_f4__Fi_i__1)(signed int __anonymous_object 8);272 __attribute__ ((unused,used,unused)) signed int (*__f4__FFi_i____1())(signed int __anonymous_object1); 273 __attribute__ ((unused,unused)) signed int (*__f4__FFi_i____1())(signed int __anonymous_object2){ 274 __attribute__ ((unused)) signed int (*___retval_f4__Fi_i__1)(signed int __anonymous_object3); 302 275 } 303 276 signed int __vtr__Fi___1(){ … … 329 302 signed int __tpr2__Fi_PPi__1(__attribute__ ((unused,unused,unused,unused,unused,unused)) signed int **__Foo__PPi_1); 330 303 signed int __tpr3__Fi_Pi__1(__attribute__ ((unused,unused,unused)) signed int *__Foo__Pi_1); 331 signed int __tpr4__Fi_Fi_Pi___1(__attribute__ ((unused,unused)) signed int (*__anonymous_object 9)(__attribute__ ((unused,unused)) signed int __anonymous_object10[((unsigned long int )5)]));304 signed int __tpr4__Fi_Fi_Pi___1(__attribute__ ((unused,unused)) signed int (*__anonymous_object4)(__attribute__ ((unused,unused)) signed int __anonymous_object5[((unsigned long int )5)])); 332 305 signed int __tpr5__Fi_Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__Foo__Fi___1)()); 333 306 signed int __tpr6__Fi_Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__Foo__Fi___1)()); 334 signed int __tpr7__Fi_Fi_Fi_i____1(__attribute__ ((unused,unused)) signed int (*__anonymous_object 11)(__attribute__ ((unused)) signed int (*__anonymous_object12)(__attribute__ ((unused,unused)) signed int __anonymous_object13)));307 signed int __tpr7__Fi_Fi_Fi_i____1(__attribute__ ((unused,unused)) signed int (*__anonymous_object6)(__attribute__ ((unused)) signed int (*__anonymous_object7)(__attribute__ ((unused,unused)) signed int __anonymous_object8))); 335 308 signed int __ad__Fi___1(){ 336 309 __attribute__ ((unused)) signed int ___retval_ad__i_1; … … 386 359 ((void)sizeof(enum __anonymous4 )); 387 360 } 388 signed int __apd1__Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *__anonymous_object 14, __attribute__ ((unused,unused,unused)) signed int *__anonymous_object15);389 signed int __apd2__Fi_PPiPPi__1(__attribute__ ((unused,unused,unused,unused)) signed int **__anonymous_object1 6, __attribute__ ((unused,unused,unused,unused)) signed int **__anonymous_object17);390 signed int __apd3__Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *__anonymous_object1 8, __attribute__ ((unused,unused,unused)) signed int *__anonymous_object19);391 signed int __apd4__Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object 20)(), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object21)());392 signed int __apd5__Fi_Fi_i_Fi_i___1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object 22)(__attribute__ ((unused)) signed int __anonymous_object23), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object24)(__attribute__ ((unused)) signed int __anonymous_object25));393 signed int __apd6__Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object2 6)(), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object27)());394 signed int __apd7__Fi_Fi_i_Fi_i___1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object2 8)(__attribute__ ((unused)) signed int __anonymous_object29), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object30)(__attribute__ ((unused)) signed int __anonymous_object31));361 signed int __apd1__Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *__anonymous_object9, __attribute__ ((unused,unused,unused)) signed int *__anonymous_object10); 362 signed int __apd2__Fi_PPiPPi__1(__attribute__ ((unused,unused,unused,unused)) signed int **__anonymous_object11, __attribute__ ((unused,unused,unused,unused)) signed int **__anonymous_object12); 363 signed int __apd3__Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *__anonymous_object13, __attribute__ ((unused,unused,unused)) signed int *__anonymous_object14); 364 signed int __apd4__Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object15)(), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object16)()); 365 signed int __apd5__Fi_Fi_i_Fi_i___1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object17)(__attribute__ ((unused)) signed int __anonymous_object18), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object19)(__attribute__ ((unused)) signed int __anonymous_object20)); 366 signed int __apd6__Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object21)(), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object22)()); 367 signed int __apd7__Fi_Fi_i_Fi_i___1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object23)(__attribute__ ((unused)) signed int __anonymous_object24), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object25)(__attribute__ ((unused)) signed int __anonymous_object26)); 395 368 struct Vad { 396 __attribute__ ((unused)) signed int __anonymous_object32; 397 __attribute__ ((unused,unused)) signed int *__anonymous_object33; 398 __attribute__ ((unused,unused)) signed int __anonymous_object34[((unsigned long int )10)]; 399 __attribute__ ((unused,unused)) signed int (*__anonymous_object35)(); 369 __attribute__ ((unused)) signed int __anonymous_object27:4; 370 __attribute__ ((unused)) signed int __anonymous_object28:4; 371 __attribute__ ((unused,unused)) signed int __anonymous_object29:6; 400 372 }; 401 373 static inline void ___constructor__F_4sVad_autogen___1(struct Vad *___dst__4sVad_1); … … 403 375 static inline void ___destructor__F_4sVad_autogen___1(struct Vad *___dst__4sVad_1); 404 376 static inline struct Vad ___operator_assign__F4sVad_4sVad4sVad_autogen___1(struct Vad *___dst__4sVad_1, struct Vad ___src__4sVad_1); 405 static inline void ___constructor__F_4sVadi_autogen___1(struct Vad *___dst__4sVad_1, __attribute__ ((unused)) signed int __anonymous_object36);406 static inline void ___constructor__F_4sVadiPi_autogen___1(struct Vad *___dst__4sVad_1, __attribute__ ((unused)) signed int __anonymous_object37, __attribute__ ((unused,unused)) signed int *__anonymous_object38);407 static inline void ___constructor__F_4sVadiPiA0i_autogen___1(struct Vad *___dst__4sVad_1, __attribute__ ((unused)) signed int __anonymous_object39, __attribute__ ((unused,unused)) signed int *__anonymous_object40, __attribute__ ((unused,unused)) signed int __anonymous_object41[((unsigned long int )10)]);408 static inline void ___constructor__F_4sVadiPiA0iFi___autogen___1(struct Vad *___dst__4sVad_1, __attribute__ ((unused)) signed int __anonymous_object42, __attribute__ ((unused,unused)) signed int *__anonymous_object43, __attribute__ ((unused,unused)) signed int __anonymous_object44[((unsigned long int )10)], __attribute__ ((unused,unused)) signed int (*__anonymous_object45)());409 377 static inline void ___constructor__F_4sVad_autogen___1(struct Vad *___dst__4sVad_1){ 410 ((void)((*___dst__4sVad_1).__anonymous_object32) /* ?{} */);411 ((void)((*___dst__4sVad_1).__anonymous_object33) /* ?{} */);412 {413 signed int _index0 = 0;414 for (;(_index0<10);((void)(++_index0))) {415 ((void)((*___dst__4sVad_1).__anonymous_object34[((signed long int )_index0)]) /* ?{} */);416 }417 418 }419 420 ((void)((*___dst__4sVad_1).__anonymous_object35) /* ?{} */);421 378 } 422 379 static inline void ___constructor__F_4sVad4sVad_autogen___1(struct Vad *___dst__4sVad_1, struct Vad ___src__4sVad_1){ 423 ((void)((*___dst__4sVad_1).__anonymous_object32=___src__4sVad_1.__anonymous_object32) /* ?{} */);424 ((void)((*___dst__4sVad_1).__anonymous_object33=___src__4sVad_1.__anonymous_object33) /* ?{} */);425 {426 signed int _index1 = 0;427 for (;(_index1<10);((void)(++_index1))) {428 ((void)((*___dst__4sVad_1).__anonymous_object34[((signed long int )_index1)]=___src__4sVad_1.__anonymous_object34[((signed long int )_index1)]) /* ?{} */);429 }430 431 }432 433 ((void)((*___dst__4sVad_1).__anonymous_object35=___src__4sVad_1.__anonymous_object35) /* ?{} */);434 380 } 435 381 static inline void ___destructor__F_4sVad_autogen___1(struct Vad *___dst__4sVad_1){ 436 ((void)((*___dst__4sVad_1).__anonymous_object35) /* ^?{} */);437 {438 signed int _index2 = (10-1);439 for (;(_index2>=0);((void)(--_index2))) {440 ((void)((*___dst__4sVad_1).__anonymous_object34[((signed long int )_index2)]) /* ^?{} */);441 }442 443 }444 445 ((void)((*___dst__4sVad_1).__anonymous_object33) /* ^?{} */);446 ((void)((*___dst__4sVad_1).__anonymous_object32) /* ^?{} */);447 382 } 448 383 static inline struct Vad ___operator_assign__F4sVad_4sVad4sVad_autogen___1(struct Vad *___dst__4sVad_1, struct Vad ___src__4sVad_1){ 449 384 struct Vad ___ret__4sVad_1; 450 ((void)((*___dst__4sVad_1).__anonymous_object32=___src__4sVad_1.__anonymous_object32));451 ((void)((*___dst__4sVad_1).__anonymous_object33=___src__4sVad_1.__anonymous_object33));452 {453 signed int _index3 = 0;454 for (;(_index3<10);((void)(++_index3))) {455 ((void)((*___dst__4sVad_1).__anonymous_object34[((signed long int )_index3)]=___src__4sVad_1.__anonymous_object34[((signed long int )_index3)]));456 }457 458 }459 460 ((void)((*___dst__4sVad_1).__anonymous_object35=___src__4sVad_1.__anonymous_object35));461 385 ((void)___constructor__F_4sVad4sVad_autogen___1((&___ret__4sVad_1), (*___dst__4sVad_1))); 462 386 return ___ret__4sVad_1; 463 387 } 464 static inline void ___constructor__F_4sVadi_autogen___1(struct Vad *___dst__4sVad_1, __attribute__ ((unused)) signed int __anonymous_object46){465 ((void)((*___dst__4sVad_1).__anonymous_object32=__anonymous_object46) /* ?{} */);466 ((void)((*___dst__4sVad_1).__anonymous_object33) /* ?{} */);467 {468 signed int _index4 = 0;469 for (;(_index4<10);((void)(++_index4))) {470 ((void)((*___dst__4sVad_1).__anonymous_object34[((signed long int )_index4)]) /* ?{} */);471 }472 473 }474 475 ((void)((*___dst__4sVad_1).__anonymous_object35) /* ?{} */);476 }477 static inline void ___constructor__F_4sVadiPi_autogen___1(struct Vad *___dst__4sVad_1, __attribute__ ((unused)) signed int __anonymous_object47, __attribute__ ((unused,unused)) signed int *__anonymous_object48){478 ((void)((*___dst__4sVad_1).__anonymous_object32=__anonymous_object47) /* ?{} */);479 ((void)((*___dst__4sVad_1).__anonymous_object33=__anonymous_object48) /* ?{} */);480 {481 signed int _index5 = 0;482 for (;(_index5<10);((void)(++_index5))) {483 ((void)((*___dst__4sVad_1).__anonymous_object34[((signed long int )_index5)]) /* ?{} */);484 }485 486 }487 488 ((void)((*___dst__4sVad_1).__anonymous_object35) /* ?{} */);489 }490 static inline void ___constructor__F_4sVadiPiA0i_autogen___1(struct Vad *___dst__4sVad_1, __attribute__ ((unused)) signed int __anonymous_object49, __attribute__ ((unused,unused)) signed int *__anonymous_object50, __attribute__ ((unused,unused)) signed int __anonymous_object51[((unsigned long int )10)]){491 ((void)((*___dst__4sVad_1).__anonymous_object32=__anonymous_object49) /* ?{} */);492 ((void)((*___dst__4sVad_1).__anonymous_object33=__anonymous_object50) /* ?{} */);493 {494 signed int _index6 = 0;495 for (;(_index6<10);((void)(++_index6))) {496 ((void)((*___dst__4sVad_1).__anonymous_object34[((signed long int )_index6)]=__anonymous_object51[((signed long int )_index6)]) /* ?{} */);497 }498 499 }500 501 ((void)((*___dst__4sVad_1).__anonymous_object35) /* ?{} */);502 }503 static inline void ___constructor__F_4sVadiPiA0iFi___autogen___1(struct Vad *___dst__4sVad_1, __attribute__ ((unused)) signed int __anonymous_object52, __attribute__ ((unused,unused)) signed int *__anonymous_object53, __attribute__ ((unused,unused)) signed int __anonymous_object54[((unsigned long int )10)], __attribute__ ((unused,unused)) signed int (*__anonymous_object55)()){504 ((void)((*___dst__4sVad_1).__anonymous_object32=__anonymous_object52) /* ?{} */);505 ((void)((*___dst__4sVad_1).__anonymous_object33=__anonymous_object53) /* ?{} */);506 {507 signed int _index7 = 0;508 for (;(_index7<10);((void)(++_index7))) {509 ((void)((*___dst__4sVad_1).__anonymous_object34[((signed long int )_index7)]=__anonymous_object54[((signed long int )_index7)]) /* ?{} */);510 }511 512 }513 514 ((void)((*___dst__4sVad_1).__anonymous_object35=__anonymous_object55) /* ?{} */);515 } -
src/tests/.expect/attributes.x86.txt
rcbdf565 r2514607d 88 88 __attribute__ ((used,unused,unused)) signed int __f7__i_1; 89 89 __attribute__ ((used,used,unused)) signed int __f8__i_1; 90 __attribute__ ((unused)) signed int __anonymous_object0;91 90 __attribute__ ((unused,unused)) signed int *__f9__Pi_1; 92 91 }; … … 103 102 static inline void ___constructor__F_4sFdliiiiiii_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1, __attribute__ ((unused)) signed int __f4__i_1, __attribute__ ((unused,unused)) signed int __f5__i_1, signed int __f6__i_1, __attribute__ ((unused,unused)) signed int __f7__i_1); 104 103 static inline void ___constructor__F_4sFdliiiiiiii_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1, __attribute__ ((unused)) signed int __f4__i_1, __attribute__ ((unused,unused)) signed int __f5__i_1, signed int __f6__i_1, __attribute__ ((unused,unused)) signed int __f7__i_1, __attribute__ ((unused)) signed int __f8__i_1); 105 static inline void ___constructor__F_4sFdliiiiiiiii_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1, __attribute__ ((unused)) signed int __f4__i_1, __attribute__ ((unused,unused)) signed int __f5__i_1, signed int __f6__i_1, __attribute__ ((unused,unused)) signed int __f7__i_1, __attribute__ ((unused)) signed int __f8__i_1, __attribute__ ((unused)) signed int __anonymous_object1); 106 static inline void ___constructor__F_4sFdliiiiiiiiiPi_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1, __attribute__ ((unused)) signed int __f4__i_1, __attribute__ ((unused,unused)) signed int __f5__i_1, signed int __f6__i_1, __attribute__ ((unused,unused)) signed int __f7__i_1, __attribute__ ((unused)) signed int __f8__i_1, __attribute__ ((unused)) signed int __anonymous_object2, __attribute__ ((unused,unused)) signed int *__f9__Pi_1); 104 static inline void ___constructor__F_4sFdliiiiiiiiPi_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1, __attribute__ ((unused)) signed int __f4__i_1, __attribute__ ((unused,unused)) signed int __f5__i_1, signed int __f6__i_1, __attribute__ ((unused,unused)) signed int __f7__i_1, __attribute__ ((unused)) signed int __f8__i_1, __attribute__ ((unused,unused)) signed int *__f9__Pi_1); 107 105 static inline void ___constructor__F_4sFdl_autogen___1(struct Fdl *___dst__4sFdl_1){ 108 106 ((void)((*___dst__4sFdl_1).__f1__i_1) /* ?{} */); … … 114 112 ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */); 115 113 ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */); 116 ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ?{} */);117 114 ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */); 118 115 } … … 126 123 ((void)((*___dst__4sFdl_1).__f7__i_1=___src__4sFdl_1.__f7__i_1) /* ?{} */); 127 124 ((void)((*___dst__4sFdl_1).__f8__i_1=___src__4sFdl_1.__f8__i_1) /* ?{} */); 128 ((void)((*___dst__4sFdl_1).__anonymous_object0=___src__4sFdl_1.__anonymous_object0) /* ?{} */);129 125 ((void)((*___dst__4sFdl_1).__f9__Pi_1=___src__4sFdl_1.__f9__Pi_1) /* ?{} */); 130 126 } 131 127 static inline void ___destructor__F_4sFdl_autogen___1(struct Fdl *___dst__4sFdl_1){ 132 128 ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ^?{} */); 133 ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ^?{} */);134 129 ((void)((*___dst__4sFdl_1).__f8__i_1) /* ^?{} */); 135 130 ((void)((*___dst__4sFdl_1).__f7__i_1) /* ^?{} */); … … 151 146 ((void)((*___dst__4sFdl_1).__f7__i_1=___src__4sFdl_1.__f7__i_1)); 152 147 ((void)((*___dst__4sFdl_1).__f8__i_1=___src__4sFdl_1.__f8__i_1)); 153 ((void)((*___dst__4sFdl_1).__anonymous_object0=___src__4sFdl_1.__anonymous_object0));154 148 ((void)((*___dst__4sFdl_1).__f9__Pi_1=___src__4sFdl_1.__f9__Pi_1)); 155 149 ((void)___constructor__F_4sFdl4sFdl_autogen___1((&___ret__4sFdl_1), (*___dst__4sFdl_1))); … … 165 159 ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */); 166 160 ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */); 167 ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ?{} */);168 161 ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */); 169 162 } … … 177 170 ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */); 178 171 ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */); 179 ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ?{} */);180 172 ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */); 181 173 } … … 189 181 ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */); 190 182 ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */); 191 ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ?{} */);192 183 ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */); 193 184 } … … 201 192 ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */); 202 193 ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */); 203 ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ?{} */);204 194 ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */); 205 195 } … … 213 203 ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */); 214 204 ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */); 215 ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ?{} */);216 205 ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */); 217 206 } … … 225 214 ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */); 226 215 ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */); 227 ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ?{} */);228 216 ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */); 229 217 } … … 237 225 ((void)((*___dst__4sFdl_1).__f7__i_1=__f7__i_1) /* ?{} */); 238 226 ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */); 239 ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ?{} */);240 227 ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */); 241 228 } … … 249 236 ((void)((*___dst__4sFdl_1).__f7__i_1=__f7__i_1) /* ?{} */); 250 237 ((void)((*___dst__4sFdl_1).__f8__i_1=__f8__i_1) /* ?{} */); 251 ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ?{} */); 252 ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */); 253 } 254 static inline void ___constructor__F_4sFdliiiiiiiii_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1, __attribute__ ((unused)) signed int __f4__i_1, __attribute__ ((unused,unused)) signed int __f5__i_1, signed int __f6__i_1, __attribute__ ((unused,unused)) signed int __f7__i_1, __attribute__ ((unused)) signed int __f8__i_1, __attribute__ ((unused)) signed int __anonymous_object3){ 238 ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */); 239 } 240 static inline void ___constructor__F_4sFdliiiiiiiiPi_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1, __attribute__ ((unused)) signed int __f4__i_1, __attribute__ ((unused,unused)) signed int __f5__i_1, signed int __f6__i_1, __attribute__ ((unused,unused)) signed int __f7__i_1, __attribute__ ((unused)) signed int __f8__i_1, __attribute__ ((unused,unused)) signed int *__f9__Pi_1){ 255 241 ((void)((*___dst__4sFdl_1).__f1__i_1=__f1__i_1) /* ?{} */); 256 242 ((void)((*___dst__4sFdl_1).__f2__i_1=__f2__i_1) /* ?{} */); … … 261 247 ((void)((*___dst__4sFdl_1).__f7__i_1=__f7__i_1) /* ?{} */); 262 248 ((void)((*___dst__4sFdl_1).__f8__i_1=__f8__i_1) /* ?{} */); 263 ((void)((*___dst__4sFdl_1).__anonymous_object0=__anonymous_object3) /* ?{} */);264 ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */);265 }266 static inline void ___constructor__F_4sFdliiiiiiiiiPi_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1, __attribute__ ((unused,unused)) signed int __f3__i_1, __attribute__ ((unused)) signed int __f4__i_1, __attribute__ ((unused,unused)) signed int __f5__i_1, signed int __f6__i_1, __attribute__ ((unused,unused)) signed int __f7__i_1, __attribute__ ((unused)) signed int __f8__i_1, __attribute__ ((unused)) signed int __anonymous_object4, __attribute__ ((unused,unused)) signed int *__f9__Pi_1){267 ((void)((*___dst__4sFdl_1).__f1__i_1=__f1__i_1) /* ?{} */);268 ((void)((*___dst__4sFdl_1).__f2__i_1=__f2__i_1) /* ?{} */);269 ((void)((*___dst__4sFdl_1).__f3__i_1=__f3__i_1) /* ?{} */);270 ((void)((*___dst__4sFdl_1).__f4__i_1=__f4__i_1) /* ?{} */);271 ((void)((*___dst__4sFdl_1).__f5__i_1=__f5__i_1) /* ?{} */);272 ((void)((*___dst__4sFdl_1).__f6__i_1=__f6__i_1) /* ?{} */);273 ((void)((*___dst__4sFdl_1).__f7__i_1=__f7__i_1) /* ?{} */);274 ((void)((*___dst__4sFdl_1).__f8__i_1=__f8__i_1) /* ?{} */);275 ((void)((*___dst__4sFdl_1).__anonymous_object0=__anonymous_object4) /* ?{} */);276 249 ((void)((*___dst__4sFdl_1).__f9__Pi_1=__f9__Pi_1) /* ?{} */); 277 250 } … … 293 266 __attribute__ ((unused)) signed int **const ___retval_f2__CPPi_1; 294 267 } 295 __attribute__ ((unused,used,unused)) signed int (*__f3__FPA0i_i__1(signed int __anonymous_object 5))[];268 __attribute__ ((unused,used,unused)) signed int (*__f3__FPA0i_i__1(signed int __anonymous_object0))[]; 296 269 __attribute__ ((unused,unused)) signed int (*__f3__FPA0i_i__1(signed int __p__i_1))[]{ 297 270 __attribute__ ((unused)) signed int (*___retval_f3__PA0i_1)[]; 298 271 } 299 __attribute__ ((unused,used,unused)) signed int (*__f4__FFi_i____1())(signed int __anonymous_object 6);300 __attribute__ ((unused,unused)) signed int (*__f4__FFi_i____1())(signed int __anonymous_object 7){301 __attribute__ ((unused)) signed int (*___retval_f4__Fi_i__1)(signed int __anonymous_object 8);272 __attribute__ ((unused,used,unused)) signed int (*__f4__FFi_i____1())(signed int __anonymous_object1); 273 __attribute__ ((unused,unused)) signed int (*__f4__FFi_i____1())(signed int __anonymous_object2){ 274 __attribute__ ((unused)) signed int (*___retval_f4__Fi_i__1)(signed int __anonymous_object3); 302 275 } 303 276 signed int __vtr__Fi___1(){ … … 329 302 signed int __tpr2__Fi_PPi__1(__attribute__ ((unused,unused,unused,unused,unused,unused)) signed int **__Foo__PPi_1); 330 303 signed int __tpr3__Fi_Pi__1(__attribute__ ((unused,unused,unused)) signed int *__Foo__Pi_1); 331 signed int __tpr4__Fi_Fi_Pi___1(__attribute__ ((unused,unused)) signed int (*__anonymous_object 9)(__attribute__ ((unused,unused)) signed int __anonymous_object10[((unsigned int )5)]));304 signed int __tpr4__Fi_Fi_Pi___1(__attribute__ ((unused,unused)) signed int (*__anonymous_object4)(__attribute__ ((unused,unused)) signed int __anonymous_object5[((unsigned int )5)])); 332 305 signed int __tpr5__Fi_Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__Foo__Fi___1)()); 333 306 signed int __tpr6__Fi_Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__Foo__Fi___1)()); 334 signed int __tpr7__Fi_Fi_Fi_i____1(__attribute__ ((unused,unused)) signed int (*__anonymous_object 11)(__attribute__ ((unused)) signed int (*__anonymous_object12)(__attribute__ ((unused,unused)) signed int __anonymous_object13)));307 signed int __tpr7__Fi_Fi_Fi_i____1(__attribute__ ((unused,unused)) signed int (*__anonymous_object6)(__attribute__ ((unused)) signed int (*__anonymous_object7)(__attribute__ ((unused,unused)) signed int __anonymous_object8))); 335 308 signed int __ad__Fi___1(){ 336 309 __attribute__ ((unused)) signed int ___retval_ad__i_1; … … 386 359 ((void)sizeof(enum __anonymous4 )); 387 360 } 388 signed int __apd1__Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *__anonymous_object 14, __attribute__ ((unused,unused,unused)) signed int *__anonymous_object15);389 signed int __apd2__Fi_PPiPPi__1(__attribute__ ((unused,unused,unused,unused)) signed int **__anonymous_object1 6, __attribute__ ((unused,unused,unused,unused)) signed int **__anonymous_object17);390 signed int __apd3__Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *__anonymous_object1 8, __attribute__ ((unused,unused,unused)) signed int *__anonymous_object19);391 signed int __apd4__Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object 20)(), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object21)());392 signed int __apd5__Fi_Fi_i_Fi_i___1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object 22)(__attribute__ ((unused)) signed int __anonymous_object23), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object24)(__attribute__ ((unused)) signed int __anonymous_object25));393 signed int __apd6__Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object2 6)(), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object27)());394 signed int __apd7__Fi_Fi_i_Fi_i___1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object2 8)(__attribute__ ((unused)) signed int __anonymous_object29), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object30)(__attribute__ ((unused)) signed int __anonymous_object31));361 signed int __apd1__Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *__anonymous_object9, __attribute__ ((unused,unused,unused)) signed int *__anonymous_object10); 362 signed int __apd2__Fi_PPiPPi__1(__attribute__ ((unused,unused,unused,unused)) signed int **__anonymous_object11, __attribute__ ((unused,unused,unused,unused)) signed int **__anonymous_object12); 363 signed int __apd3__Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *__anonymous_object13, __attribute__ ((unused,unused,unused)) signed int *__anonymous_object14); 364 signed int __apd4__Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object15)(), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object16)()); 365 signed int __apd5__Fi_Fi_i_Fi_i___1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object17)(__attribute__ ((unused)) signed int __anonymous_object18), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object19)(__attribute__ ((unused)) signed int __anonymous_object20)); 366 signed int __apd6__Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object21)(), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object22)()); 367 signed int __apd7__Fi_Fi_i_Fi_i___1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object23)(__attribute__ ((unused)) signed int __anonymous_object24), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object25)(__attribute__ ((unused)) signed int __anonymous_object26)); 395 368 struct Vad { 396 __attribute__ ((unused)) signed int __anonymous_object32; 397 __attribute__ ((unused,unused)) signed int *__anonymous_object33; 398 __attribute__ ((unused,unused)) signed int __anonymous_object34[((unsigned int )10)]; 399 __attribute__ ((unused,unused)) signed int (*__anonymous_object35)(); 369 __attribute__ ((unused)) signed int __anonymous_object27:4; 370 __attribute__ ((unused)) signed int __anonymous_object28:4; 371 __attribute__ ((unused,unused)) signed int __anonymous_object29:6; 400 372 }; 401 373 static inline void ___constructor__F_4sVad_autogen___1(struct Vad *___dst__4sVad_1); … … 403 375 static inline void ___destructor__F_4sVad_autogen___1(struct Vad *___dst__4sVad_1); 404 376 static inline struct Vad ___operator_assign__F4sVad_4sVad4sVad_autogen___1(struct Vad *___dst__4sVad_1, struct Vad ___src__4sVad_1); 405 static inline void ___constructor__F_4sVadi_autogen___1(struct Vad *___dst__4sVad_1, __attribute__ ((unused)) signed int __anonymous_object36);406 static inline void ___constructor__F_4sVadiPi_autogen___1(struct Vad *___dst__4sVad_1, __attribute__ ((unused)) signed int __anonymous_object37, __attribute__ ((unused,unused)) signed int *__anonymous_object38);407 static inline void ___constructor__F_4sVadiPiA0i_autogen___1(struct Vad *___dst__4sVad_1, __attribute__ ((unused)) signed int __anonymous_object39, __attribute__ ((unused,unused)) signed int *__anonymous_object40, __attribute__ ((unused,unused)) signed int __anonymous_object41[((unsigned int )10)]);408 static inline void ___constructor__F_4sVadiPiA0iFi___autogen___1(struct Vad *___dst__4sVad_1, __attribute__ ((unused)) signed int __anonymous_object42, __attribute__ ((unused,unused)) signed int *__anonymous_object43, __attribute__ ((unused,unused)) signed int __anonymous_object44[((unsigned int )10)], __attribute__ ((unused,unused)) signed int (*__anonymous_object45)());409 377 static inline void ___constructor__F_4sVad_autogen___1(struct Vad *___dst__4sVad_1){ 410 ((void)((*___dst__4sVad_1).__anonymous_object32) /* ?{} */);411 ((void)((*___dst__4sVad_1).__anonymous_object33) /* ?{} */);412 {413 signed int _index0 = 0;414 for (;(_index0<10);((void)(++_index0))) {415 ((void)((*___dst__4sVad_1).__anonymous_object34[_index0]) /* ?{} */);416 }417 418 }419 420 ((void)((*___dst__4sVad_1).__anonymous_object35) /* ?{} */);421 378 } 422 379 static inline void ___constructor__F_4sVad4sVad_autogen___1(struct Vad *___dst__4sVad_1, struct Vad ___src__4sVad_1){ 423 ((void)((*___dst__4sVad_1).__anonymous_object32=___src__4sVad_1.__anonymous_object32) /* ?{} */);424 ((void)((*___dst__4sVad_1).__anonymous_object33=___src__4sVad_1.__anonymous_object33) /* ?{} */);425 {426 signed int _index1 = 0;427 for (;(_index1<10);((void)(++_index1))) {428 ((void)((*___dst__4sVad_1).__anonymous_object34[_index1]=___src__4sVad_1.__anonymous_object34[_index1]) /* ?{} */);429 }430 431 }432 433 ((void)((*___dst__4sVad_1).__anonymous_object35=___src__4sVad_1.__anonymous_object35) /* ?{} */);434 380 } 435 381 static inline void ___destructor__F_4sVad_autogen___1(struct Vad *___dst__4sVad_1){ 436 ((void)((*___dst__4sVad_1).__anonymous_object35) /* ^?{} */);437 {438 signed int _index2 = (10-1);439 for (;(_index2>=0);((void)(--_index2))) {440 ((void)((*___dst__4sVad_1).__anonymous_object34[_index2]) /* ^?{} */);441 }442 443 }444 445 ((void)((*___dst__4sVad_1).__anonymous_object33) /* ^?{} */);446 ((void)((*___dst__4sVad_1).__anonymous_object32) /* ^?{} */);447 382 } 448 383 static inline struct Vad ___operator_assign__F4sVad_4sVad4sVad_autogen___1(struct Vad *___dst__4sVad_1, struct Vad ___src__4sVad_1){ 449 384 struct Vad ___ret__4sVad_1; 450 ((void)((*___dst__4sVad_1).__anonymous_object32=___src__4sVad_1.__anonymous_object32));451 ((void)((*___dst__4sVad_1).__anonymous_object33=___src__4sVad_1.__anonymous_object33));452 {453 signed int _index3 = 0;454 for (;(_index3<10);((void)(++_index3))) {455 ((void)((*___dst__4sVad_1).__anonymous_object34[_index3]=___src__4sVad_1.__anonymous_object34[_index3]));456 }457 458 }459 460 ((void)((*___dst__4sVad_1).__anonymous_object35=___src__4sVad_1.__anonymous_object35));461 385 ((void)___constructor__F_4sVad4sVad_autogen___1((&___ret__4sVad_1), (*___dst__4sVad_1))); 462 386 return ___ret__4sVad_1; 463 387 } 464 static inline void ___constructor__F_4sVadi_autogen___1(struct Vad *___dst__4sVad_1, __attribute__ ((unused)) signed int __anonymous_object46){465 ((void)((*___dst__4sVad_1).__anonymous_object32=__anonymous_object46) /* ?{} */);466 ((void)((*___dst__4sVad_1).__anonymous_object33) /* ?{} */);467 {468 signed int _index4 = 0;469 for (;(_index4<10);((void)(++_index4))) {470 ((void)((*___dst__4sVad_1).__anonymous_object34[_index4]) /* ?{} */);471 }472 473 }474 475 ((void)((*___dst__4sVad_1).__anonymous_object35) /* ?{} */);476 }477 static inline void ___constructor__F_4sVadiPi_autogen___1(struct Vad *___dst__4sVad_1, __attribute__ ((unused)) signed int __anonymous_object47, __attribute__ ((unused,unused)) signed int *__anonymous_object48){478 ((void)((*___dst__4sVad_1).__anonymous_object32=__anonymous_object47) /* ?{} */);479 ((void)((*___dst__4sVad_1).__anonymous_object33=__anonymous_object48) /* ?{} */);480 {481 signed int _index5 = 0;482 for (;(_index5<10);((void)(++_index5))) {483 ((void)((*___dst__4sVad_1).__anonymous_object34[_index5]) /* ?{} */);484 }485 486 }487 488 ((void)((*___dst__4sVad_1).__anonymous_object35) /* ?{} */);489 }490 static inline void ___constructor__F_4sVadiPiA0i_autogen___1(struct Vad *___dst__4sVad_1, __attribute__ ((unused)) signed int __anonymous_object49, __attribute__ ((unused,unused)) signed int *__anonymous_object50, __attribute__ ((unused,unused)) signed int __anonymous_object51[((unsigned int )10)]){491 ((void)((*___dst__4sVad_1).__anonymous_object32=__anonymous_object49) /* ?{} */);492 ((void)((*___dst__4sVad_1).__anonymous_object33=__anonymous_object50) /* ?{} */);493 {494 signed int _index6 = 0;495 for (;(_index6<10);((void)(++_index6))) {496 ((void)((*___dst__4sVad_1).__anonymous_object34[_index6]=__anonymous_object51[_index6]) /* ?{} */);497 }498 499 }500 501 ((void)((*___dst__4sVad_1).__anonymous_object35) /* ?{} */);502 }503 static inline void ___constructor__F_4sVadiPiA0iFi___autogen___1(struct Vad *___dst__4sVad_1, __attribute__ ((unused)) signed int __anonymous_object52, __attribute__ ((unused,unused)) signed int *__anonymous_object53, __attribute__ ((unused,unused)) signed int __anonymous_object54[((unsigned int )10)], __attribute__ ((unused,unused)) signed int (*__anonymous_object55)()){504 ((void)((*___dst__4sVad_1).__anonymous_object32=__anonymous_object52) /* ?{} */);505 ((void)((*___dst__4sVad_1).__anonymous_object33=__anonymous_object53) /* ?{} */);506 {507 signed int _index7 = 0;508 for (;(_index7<10);((void)(++_index7))) {509 ((void)((*___dst__4sVad_1).__anonymous_object34[_index7]=__anonymous_object54[_index7]) /* ?{} */);510 }511 512 }513 514 ((void)((*___dst__4sVad_1).__anonymous_object35=__anonymous_object55) /* ?{} */);515 } -
src/tests/.expect/declarationErrors.txt
rcbdf565 r2514607d 17 17 18 18 19 declarationErrors.c:22:1 error: duplicate static in declaration of x6: static const volatile instance of typeInt19 declarationErrors.c:22:1 error: duplicate static in declaration of x6: static const volatile Int 20 20 21 21 declarationErrors.c:24:1 error: duplicate const in declaration of f01: static inline function -
src/tests/attributes.c
rcbdf565 r2514607d 10 10 // Created On : Mon Feb 6 16:07:02 2017 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sun Jul 8 21:12:07201813 // Update Count : 812 // Last Modified On : Thu Jul 19 13:50:51 2018 13 // Update Count : 15 14 14 // 15 15 … … 42 42 __attribute__(( unused )) int f5 __attribute__(( unused )); 43 43 __attribute__(( used )) int f6 __attribute__(( packed )), f7 __attribute__(( unused )) __attribute__(( unused )), __attribute__(( used )) f8 __attribute__(( unused )); 44 int __attribute__(( unused ));45 44 int ( ( * (f9) __attribute__(( unused )) ) __attribute__(( unused )) ); 46 45 }; … … 149 148 struct Vad { 150 149 int __attribute__(( unused )); 151 int __attribute__(( unused )) * __attribute__(( unused )); 152 int __attribute__(( unused )) [10] __attribute__(( unused )); 153 int __attribute__(( unused )) (*)() __attribute__(( unused )); 150 int __attribute__(( unused )) :4; 151 int __attribute__(( unused )) :4, __attribute__(( unused )) :6; 154 152 }; 155 153
Note: See TracChangeset
for help on using the changeset viewer.