Changes in / [2514607d:cbdf565]
- Location:
- src
- Files:
-
- 16 edited
-
Common/SemanticError.h (modified) (3 diffs)
-
Parser/DeclarationNode.cc (modified) (13 diffs)
-
Parser/ParseNode.h (modified) (11 diffs)
-
Parser/TypeData.cc (modified) (10 diffs)
-
Parser/TypeData.h (modified) (5 diffs)
-
Parser/parser.yy (modified) (14 diffs)
-
SymTab/Validate.cc (modified) (3 diffs)
-
driver/cc1.cc (modified) (2 diffs)
-
libcfa/concurrency/kernel.c (modified) (12 diffs)
-
libcfa/concurrency/kernel_private.h (modified) (1 diff)
-
libcfa/concurrency/preemption.c (modified) (5 diffs)
-
libcfa/concurrency/preemption.h (modified) (1 diff)
-
tests/.expect/attributes.x64.txt (modified) (18 diffs)
-
tests/.expect/attributes.x86.txt (modified) (18 diffs)
-
tests/.expect/declarationErrors.txt (modified) (1 diff)
-
tests/attributes.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Common/SemanticError.h
r2514607d rcbdf565 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Jul 19 10:09:17201813 // Update Count : 3 112 // Last Modified On : Wed May 16 15:01:23 2018 13 // Update Count : 30 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},60 59 }; 61 60 … … 65 64 BadQualifiersZeroOne, 66 65 AggrForwardDecl, 67 SuperfluousDecl, 68 NUMBER_OF_WARNINGS, // This MUST be the last warning 66 NUMBER_OF_WARNINGS, //This MUST be the last warning 69 67 }; 70 68 -
src/Parser/DeclarationNode.cc
r2514607d rcbdf565 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 20 14:56:54201813 // Update Count : 1 10712 // Last Modified On : Fri Jul 6 06:56:08 2018 13 // Update Count : 1088 14 14 // 15 15 … … 54 54 55 55 DeclarationNode::DeclarationNode() : 56 linkage( ::linkage ) { 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 ) { 57 65 58 66 // variable.name = nullptr; … … 96 104 newnode->builtin = NoBuiltinType; 97 105 newnode->type = maybeClone( type ); 98 newnode->inLine = inLine;99 106 newnode->storageClasses = storageClasses; 100 107 newnode->funcSpecs = funcSpecs; … … 124 131 } // DeclarationNode::clone 125 132 126 void DeclarationNode::print( std::ostream & os, int indent ) const {133 void DeclarationNode::print( std::ostream &os, int indent ) const { 127 134 os << string( indent, ' ' ); 128 135 if ( name ) { … … 160 167 } 161 168 162 void DeclarationNode::printList( std::ostream & os, int indent ) const {169 void DeclarationNode::printList( std::ostream &os, int indent ) const { 163 170 ParseNode::printList( os, indent ); 164 171 if ( hasEllipsis ) { … … 514 521 } // DeclarationNode::copySpecifiers 515 522 516 static void addQualifiersToType( TypeData *& src, TypeData * dst ) {523 static void addQualifiersToType( TypeData *&src, TypeData * dst ) { 517 524 if ( dst->base ) { 518 525 addQualifiersToType( src, dst->base ); … … 567 574 } // addQualifiers 568 575 569 static void addTypeToType( TypeData *& src, TypeData *&dst ) {576 static void addTypeToType( TypeData *&src, TypeData *&dst ) { 570 577 if ( src->forall && dst->kind == TypeData::Function ) { 571 578 if ( dst->forall ) { … … 958 965 } 959 966 960 void buildList( const DeclarationNode * firstNode, std::list< Declaration * > & outputList ) {967 void buildList( const DeclarationNode * firstNode, std::list< Declaration * > &outputList ) { 961 968 SemanticErrorException errors; 962 969 std::back_insert_iterator< std::list< Declaration * > > out( outputList ); … … 995 1002 // struct T; // anonymous member 996 1003 // }; 997 if ( ! (extracted && decl->name == "" && ! anon && ! cur->get_inLine()) ) {998 if ( decl->name == "") {1004 if ( ! (extracted && decl->name == "" && ! anon) ) { 1005 if (decl->name == "") { 999 1006 if ( DeclarationWithType * dwt = dynamic_cast<DeclarationWithType *>( decl ) ) { 1000 1007 if ( ReferenceToType * aggr = dynamic_cast<ReferenceToType *>( dwt->get_type() ) ) { 1001 1008 if ( aggr->name.find("anonymous") == std::string::npos ) { 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 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 1005 1024 SemanticWarning( cur->location, Warning::AggrForwardDecl, aggr->name.c_str() ); 1006 } // if1007 } // if1008 } // if1009 } // if1010 } // if1025 } 1026 } 1027 } 1028 } 1029 } 1011 1030 decl->location = cur->location; 1012 * out++ = decl;1013 } // if1031 * out++ = decl; 1032 } 1014 1033 } // if 1015 } catch( SemanticErrorException & e ) {1034 } catch( SemanticErrorException &e ) { 1016 1035 errors.append( e ); 1017 1036 } // try 1018 } // for1037 } // while 1019 1038 1020 1039 if ( ! errors.isEmpty() ) { … … 1024 1043 1025 1044 // currently only builds assertions, function parameters, and return values 1026 void buildList( const DeclarationNode * firstNode, std::list< DeclarationWithType * > & outputList ) {1045 void buildList( const DeclarationNode * firstNode, std::list< DeclarationWithType * > &outputList ) { 1027 1046 SemanticErrorException errors; 1028 1047 std::back_insert_iterator< std::list< DeclarationWithType * > > out( outputList ); … … 1055 1074 * out++ = obj; 1056 1075 } // if 1057 } catch( SemanticErrorException & e ) {1076 } catch( SemanticErrorException &e ) { 1058 1077 errors.append( e ); 1059 1078 } // try … … 1065 1084 } // buildList 1066 1085 1067 void buildTypeList( const DeclarationNode * firstNode, std::list< Type * > & outputList ) {1086 void buildTypeList( const DeclarationNode * firstNode, std::list< Type * > &outputList ) { 1068 1087 SemanticErrorException errors; 1069 1088 std::back_insert_iterator< std::list< Type * > > out( outputList ); … … 1073 1092 try { 1074 1093 * out++ = cur->buildType(); 1075 } catch( SemanticErrorException & e ) {1094 } catch( SemanticErrorException &e ) { 1076 1095 errors.append( e ); 1077 1096 } // try -
src/Parser/ParseNode.h
r2514607d rcbdf565 10 10 // Created On : Sat May 16 13:28:16 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Jul 20 14:56:30201813 // Update Count : 8 5012 // Last Modified On : Wed Jun 6 16:17:18 2018 13 // Update Count : 843 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() ;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() << std::endl; 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; }308 305 public: 309 306 DeclarationNode * get_last() { return (DeclarationNode *)ParseNode::get_last(); } … … 330 327 StaticAssert_t assert; 331 328 332 BuiltinType builtin = NoBuiltinType; 333 334 TypeData * type = nullptr; 335 336 bool inLine = false; 329 BuiltinType builtin; 330 331 TypeData * type; 332 337 333 Type::FuncSpecifiers funcSpecs; 338 334 Type::StorageClasses storageClasses; 339 335 340 ExpressionNode * bitfieldWidth = nullptr;336 ExpressionNode * bitfieldWidth; 341 337 std::unique_ptr<ExpressionNode> enumeratorValue; 342 bool hasEllipsis = false;338 bool hasEllipsis; 343 339 LinkageSpec::Spec linkage; 344 Expression * asmName = nullptr;340 Expression * asmName; 345 341 std::list< Attribute * > attributes; 346 InitializerNode * initializer = nullptr;342 InitializerNode * initializer; 347 343 bool extension = false; 348 344 std::string error; 349 StatementNode * asmStmt = nullptr;345 StatementNode * asmStmt; 350 346 351 347 static UniqueName anonymous; … … 381 377 virtual StatementNode * append_last_case( StatementNode * ); 382 378 383 virtual void print( std::ostream & os, __attribute__((unused)) int indent = 0 ) const override {379 virtual void print( std::ostream &os, __attribute__((unused)) int indent = 0 ) const override { 384 380 os << stmt.get() << std::endl; 385 381 } … … 439 435 440 436 template< typename SynTreeType, typename NodeType, template< typename, typename...> class Container, typename... Args > 441 void buildList( const NodeType * firstNode, Container< SynTreeType *, Args... > & outputList ) {437 void buildList( const NodeType * firstNode, Container< SynTreeType *, Args... > &outputList ) { 442 438 SemanticErrorException errors; 443 439 std::back_insert_iterator< Container< SynTreeType *, Args... > > out( outputList ); … … 453 449 assertf(false, "buildList unknown type"); 454 450 } // if 455 } catch( SemanticErrorException & e ) {451 } catch( SemanticErrorException &e ) { 456 452 errors.append( e ); 457 453 } // try … … 464 460 465 461 // in DeclarationNode.cc 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 );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 ); 469 465 470 466 template< typename SynTreeType, typename NodeType > 471 void buildMoveList( const NodeType * firstNode, std::list< SynTreeType * > & outputList ) {467 void buildMoveList( const NodeType * firstNode, std::list< SynTreeType * > &outputList ) { 472 468 buildList( firstNode, outputList ); 473 469 delete firstNode; -
src/Parser/TypeData.cc
r2514607d rcbdf565 10 10 // Created On : Sat May 16 15:12:51 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Jul 20 14:39:31201813 // Update Count : 6 2212 // Last Modified On : Thu Jul 12 13:52:09 2018 13 // Update Count : 606 14 14 // 15 15 … … 76 76 aggregate.parent = nullptr; 77 77 aggregate.anon = false; 78 aggregate.inLine = false; 78 79 break; 79 80 case AggregateInst: … … 82 83 aggInst.params = nullptr; 83 84 aggInst.hoistType = false; 85 aggInst.inLine = false; 84 86 break; 85 87 case Symbolic: … … 219 221 newtype->aggregate.body = aggregate.body; 220 222 newtype->aggregate.anon = aggregate.anon; 223 newtype->aggregate.inLine = aggregate.inLine; 221 224 newtype->aggregate.tagged = aggregate.tagged; 222 225 newtype->aggregate.parent = aggregate.parent ? new string( *aggregate.parent ) : nullptr; … … 226 229 newtype->aggInst.params = maybeClone( aggInst.params ); 227 230 newtype->aggInst.hoistType = aggInst.hoistType; 231 newtype->aggInst.inLine = aggInst.inLine; 228 232 break; 229 233 case Enum: … … 271 275 272 276 switch ( kind ) { 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 277 case Unknown: 278 os << "entity of unknown type "; 284 279 break; 285 280 case Pointer: … … 290 285 } // if 291 286 break; 292 case Reference: 293 os << "reference "; 294 if ( base ) { 295 os << "to "; 296 base->print( os, indent ); 297 } // if 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 ] << " "; 298 296 break; 299 297 case Array: … … 381 379 } // if 382 380 break; 383 case EnumConstant: 384 os << "enumeration constant "; 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 385 387 break; 386 388 case Symbolic: … … 404 406 } // if 405 407 break; 406 case SymbolicInst:407 os << *symbolic.name;408 if ( symbolic.actuals ) {409 os << "(";410 symbolic.actuals->printList( os, indent + 2 );411 os << ")";412 } // if413 break;414 408 case Tuple: 415 409 os << "tuple "; … … 427 421 case Builtin: 428 422 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 ";439 423 break; 440 424 default: -
src/Parser/TypeData.h
r2514607d rcbdf565 10 10 // Created On : Sat May 16 15:18:36 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Jul 20 13:56:40201813 // Update Count : 19 512 // Last Modified On : Thu Jul 12 14:00:09 2018 13 // Update Count : 193 14 14 // 15 15 … … 26 26 27 27 struct TypeData { 28 enum Kind { Basic, Pointer, Reference, Array, Function, Aggregate, AggregateInst, Enum, EnumConstant, Symbolic,28 enum Kind { Basic, Pointer, Array, Reference, 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; 39 40 40 41 bool tagged; … … 46 47 ExpressionNode * params; 47 48 bool hoistType; 49 bool inLine; 48 50 }; 49 51 … … 77 79 }; 78 80 79 struct Qualified_t { // qualified type S.T81 struct Qualified_t { // qualified type S.T 80 82 TypeData * parent; 81 83 TypeData * child; -
src/Parser/parser.yy
r2514607d rcbdf565 10 10 // Created On : Sat Sep 1 20:22:55 2001 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Jul 20 11:46:46201813 // Update Count : 3 83712 // Last Modified On : Thu Jul 12 16:16:25 2018 13 // Update Count : 3756 14 14 // 15 15 … … 114 114 } // for 115 115 } // distExt 116 117 void distInl( DeclarationNode * declaration ) {118 // distribute EXTENSION across all declarations119 for ( DeclarationNode *iter = declaration; iter != nullptr; iter = (DeclarationNode *)iter->get_next() ) {120 iter->set_inLine( true );121 } // for122 } // distInl123 116 124 117 void distQual( DeclarationNode * declaration, DeclarationNode * qualifiers ) { … … 173 166 } // build_postfix_name 174 167 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 } // if183 fieldList = DeclarationNode::newName( nullptr );184 } // if185 return distAttr( typeSpec, fieldList ); // mark all fields in list186 } // fieldDecl187 188 168 bool forall = false, yyy = false; // aggregate have one or more forall qualifiers ? 189 169 … … 358 338 %type<decl> exception_declaration 359 339 360 %type<decl> field_declaration _list_opt field_declaration field_declaring_list_opt field_declarator field_abstract_list_opt field_abstract361 %type<en> field field_ name_list field_name fraction_constants_opt340 %type<decl> field_declaration field_declaration_list_opt field_declarator_opt field_declaring_list 341 %type<en> field field_list field_name fraction_constants_opt 362 342 363 343 %type<decl> external_function_definition function_definition function_array function_declarator function_no_ptr function_ptr … … 372 352 %type<decl> cfa_array_parameter_1st_dimension 373 353 374 %type<decl> cfa_trait_declaring_list cfa_declaration cfa_field_declaring_list cfa_field_abstract_list354 %type<decl> cfa_trait_declaring_list cfa_declaration cfa_field_declaring_list 375 355 %type<decl> cfa_function_declaration cfa_function_return cfa_function_specifier 376 356 … … 512 492 ; 513 493 494 identifier: 495 IDENTIFIER 496 | ATTR_IDENTIFIER // CFA 497 | quasi_keyword 498 ; 499 514 500 no_attr_identifier: 515 501 IDENTIFIER 516 502 | quasi_keyword 517 | '@' // CFA518 { Token tok = { new string( DeclarationNode::anonymous.newName() ), yylval.tok.loc }; $$ = tok; }519 ;520 521 identifier:522 no_attr_identifier523 | ATTR_IDENTIFIER // CFA524 503 ; 525 504 … … 562 541 | type_name '.' no_attr_identifier // CFA, nested type 563 542 { SemanticError( yylloc, "Qualified name is currently unimplemented." ); $$ = nullptr; } 564 | type_name '.' '[' field_ name_list ']'// CFA, nested type / tuple field selector543 | type_name '.' '[' field_list ']' // CFA, nested type / tuple field selector 565 544 { SemanticError( yylloc, "Qualified name is currently unimplemented." ); $$ = nullptr; } 566 545 | GENERIC '(' assignment_expression ',' generic_assoc_list ')' // C11 … … 615 594 | postfix_expression FLOATING_FRACTIONconstant // CFA, tuple index 616 595 { $$ = new ExpressionNode( build_fieldSel( $1, build_field_name_FLOATING_FRACTIONconstant( *$2 ) ) ); } 617 | postfix_expression '.' '[' field_ name_list ']'// CFA, tuple field selector596 | postfix_expression '.' '[' field_list ']' // CFA, tuple field selector 618 597 { $$ = new ExpressionNode( build_fieldSel( $1, build_tuple( $4 ) ) ); } 619 598 | postfix_expression ARROW no_attr_identifier … … 623 602 | postfix_expression ARROW INTEGERconstant // CFA, tuple index 624 603 { $$ = new ExpressionNode( build_pfieldSel( $1, build_constantInteger( *$3 ) ) ); } 625 | postfix_expression ARROW '[' field_ name_list ']'// CFA, tuple field selector604 | postfix_expression ARROW '[' field_list ']' // CFA, tuple field selector 626 605 { $$ = new ExpressionNode( build_pfieldSel( $1, build_tuple( $4 ) ) ); } 627 606 | postfix_expression ICR … … 650 629 // empty 651 630 { $$ = nullptr; } 652 | '?' // CFA, default parameter 653 { SemanticError( yylloc, "Default parameter for argument is currently unimplemented." ); $$ = nullptr; } 654 // { $$ = new ExpressionNode( build_constantInteger( *new string( "2" ) ) ); } 631 // | '@' // use default argument 632 // { $$ = new ExpressionNode( build_constantInteger( *new string( "2" ) ) ); } 655 633 | assignment_expression 656 634 ; 657 635 658 field_ name_list:// CFA, tuple field selector636 field_list: // CFA, tuple field selector 659 637 field 660 | field_ name_list ',' field{ $$ = (ExpressionNode *)$1->set_last( $3 ); }638 | field_list ',' field { $$ = (ExpressionNode *)$1->set_last( $3 ); } 661 639 ; 662 640 … … 665 643 | FLOATING_DECIMALconstant field 666 644 { $$ = new ExpressionNode( build_fieldSel( new ExpressionNode( build_field_name_FLOATING_DECIMALconstant( *$1 ) ), maybeMoveBuild<Expression>( $2 ) ) ); } 667 | FLOATING_DECIMALconstant '[' field_ name_list ']'645 | FLOATING_DECIMALconstant '[' field_list ']' 668 646 { $$ = new ExpressionNode( build_fieldSel( new ExpressionNode( build_field_name_FLOATING_DECIMALconstant( *$1 ) ), build_tuple( $3 ) ) ); } 669 647 | field_name '.' field 670 648 { $$ = new ExpressionNode( build_fieldSel( $1, maybeMoveBuild<Expression>( $3 ) ) ); } 671 | field_name '.' '[' field_ name_list ']'649 | field_name '.' '[' field_list ']' 672 650 { $$ = new ExpressionNode( build_fieldSel( $1, build_tuple( $4 ) ) ); } 673 651 | field_name ARROW field 674 652 { $$ = new ExpressionNode( build_pfieldSel( $1, maybeMoveBuild<Expression>( $3 ) ) ); } 675 | field_name ARROW '[' field_ name_list ']'653 | field_name ARROW '[' field_list ']' 676 654 { $$ = new ExpressionNode( build_pfieldSel( $1, build_tuple( $4 ) ) ); } 677 655 ; … … 1954 1932 1955 1933 field_declaration: 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 ); 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 1968 1950 } 1969 1951 | typedef_declaration ';' // CFA … … 1971 1953 | EXTENSION cfa_field_declaring_list ';' // GCC 1972 1954 { distExt( $2 ); $$ = $2; } // mark all fields in list 1973 | INLINE cfa_field_abstract_list ';' // CFA, new style field declaration1974 { $$ = $2; } // mark all fields in list1975 1955 | cfa_typedef_declaration ';' // CFA 1976 1956 | static_assert // C11 1977 1957 ; 1978 1958 1979 field_declaring_list_opt:1980 // empty1981 { $$ = nullptr; }1982 | field_declarator1983 | field_declaring_list_opt ',' attribute_list_opt field_declarator1984 { $$ = $1->appendList( $4->addQualifiers( $3 ) ); }1985 ;1986 1987 field_declarator:1988 bit_subrange_size // C special case, no field name1989 { $$ = DeclarationNode::newBitfield( $1 ); }1990 | variable_declarator bit_subrange_size_opt1991 // 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_opt1994 // 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 // empty2000 { $$ = nullptr; }2001 | field_abstract2002 | field_abstract_list_opt ',' attribute_list_opt field_abstract2003 { $$ = $1->appendList( $4->addQualifiers( $3 ) ); }2004 ;2005 2006 field_abstract:2007 // no bit fields2008 variable_abstract_declarator2009 ;2010 2011 1959 cfa_field_declaring_list: // CFA, new style field declaration 2012 // bit-fields are handled by C declarations2013 cfa_abstract_declarator_tuple no_attr_identifier_or_type_name1960 cfa_abstract_declarator_tuple // CFA, no field name 1961 | cfa_abstract_declarator_tuple no_attr_identifier_or_type_name 2014 1962 { $$ = $1->addName( $2 ); } 2015 1963 | cfa_field_declaring_list ',' no_attr_identifier_or_type_name 2016 1964 { $$ = $1->appendList( $1->cloneType( $3 ) ); } 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 ',' 1965 | cfa_field_declaring_list ',' // CFA, no field name 2023 1966 { $$ = $1->appendList( $1->cloneType( 0 ) ); } 1967 ; 1968 1969 field_declaring_list: 1970 field_declarator_opt 1971 | field_declaring_list ',' attribute_list_opt field_declarator_opt 1972 { $$ = $1->appendList( $4->addQualifiers( $3 ) ); } 1973 ; 1974 1975 field_declarator_opt: 1976 // empty 1977 { $$ = DeclarationNode::newName( 0 ); /* XXX */ } // CFA, no field name 1978 // '@' 1979 // { $$ = DeclarationNode::newName( new string( DeclarationNode::anonymous.newName() ) ); } // CFA, no field name 1980 | bit_subrange_size // no field name 1981 { $$ = DeclarationNode::newBitfield( $1 ); } 1982 | variable_declarator bit_subrange_size_opt 1983 // 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_opt 1986 // 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 name 2024 1989 ; 2025 1990 … … 2261 2226 | '[' push constant_expression ELLIPSIS constant_expression pop ']' // GCC, multiple array elements 2262 2227 { $$ = new ExpressionNode( new RangeExpr( maybeMoveBuild< Expression >( $3 ), maybeMoveBuild< Expression >( $5 ) ) ); } 2263 | '.' '[' push field_ name_list pop ']'// CFA, tuple field selector2228 | '.' '[' push field_list pop ']' // CFA, tuple field selector 2264 2229 { $$ = $4; } 2265 2230 ; -
src/SymTab/Validate.cc
r2514607d rcbdf565 368 368 auto base = td->base; 369 369 assert( base ); 370 Type * ret = base->clone(); 371 ret->get_qualifiers() = qualType->get_qualifiers(); 372 return ret; 370 return base->clone(); 373 371 } else { 374 372 // .T => T is not a type name … … 390 388 if ( StructDecl * aggr = dynamic_cast< StructDecl * >( member ) ) { 391 389 if ( aggr->name == inst->name ) { 392 // TODO: is this case, and other non-TypeInstType cases, necessary?393 390 return new StructInstType( qualType->get_qualifiers(), aggr ); 394 391 } … … 407 404 } 408 405 } else if ( TypeInstType * inst = dynamic_cast< TypeInstType * >( child ) ) { 409 // name on the right is a typedef406 // struct typedefs are being replaced by forward decls too early; move it to hoist struct 410 407 if ( NamedTypeDecl * aggr = dynamic_cast< NamedTypeDecl * > ( member ) ) { 411 408 if ( aggr->name == inst->name ) { 412 409 assert( aggr->base ); 413 Type * ret = aggr->base->clone(); 414 ret->get_qualifiers() = qualType->get_qualifiers(); 415 return ret; 410 return aggr->base->clone(); 416 411 } 417 412 } -
src/driver/cc1.cc
r2514607d rcbdf565 10 10 // Created On : Fri Aug 26 14:23:51 2005 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Jul 19 10:46:11201813 // Update Count : 11 112 // Last Modified On : Fri Jul 13 17:40:10 2018 13 // Update Count : 110 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
r2514607d rcbdf565 37 37 38 38 //Start and stop routine for the kernel, declared first to make sure they run first 39 staticvoid kernel_startup(void) __attribute__(( constructor( STARTUP_PRIORITY_KERNEL ) ));40 staticvoid kernel_shutdown(void) __attribute__(( destructor ( STARTUP_PRIORITY_KERNEL ) ));39 void kernel_startup(void) __attribute__(( constructor( STARTUP_PRIORITY_KERNEL ) )); 40 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 staticvoid ?{}(processorCtx_t & this, processor * proc, current_stack_info_t * info) {135 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);141 140 void ?{}(processor & this, const char * name, cluster & cltr) with( this ) { 142 141 this.name = name; … … 187 186 // Kernel Scheduling logic 188 187 //============================================================================================= 189 static void runThread(processor * this, thread_desc * dst);190 static void finishRunning(processor * this);191 static void halt(processor * this);192 193 188 //Main of the processor contexts 194 189 void main(processorCtx_t & runner) { … … 244 239 // runThread runs a thread by context switching 245 240 // from the processor coroutine to the target thread 246 staticvoid runThread(processor * this, thread_desc * dst) {241 void runThread(processor * this, thread_desc * dst) { 247 242 assert(dst->curr_cor); 248 243 coroutine_desc * proc_cor = get_coroutine(this->runner); … … 261 256 262 257 // KERNEL_ONLY 263 staticvoid returnToKernel() {258 void returnToKernel() { 264 259 coroutine_desc * proc_cor = get_coroutine(kernelTLS.this_processor->runner); 265 260 coroutine_desc * thrd_cor = kernelTLS.this_thread->curr_cor = kernelTLS.this_coroutine; … … 270 265 // Once a thread has finished running, some of 271 266 // its final actions must be executed from the kernel 272 staticvoid finishRunning(processor * this) with( this->finish ) {267 void finishRunning(processor * this) with( this->finish ) { 273 268 verify( ! kernelTLS.preemption_state.enabled ); 274 269 choose( action_code ) { … … 304 299 // This is the entry point for processors (kernel threads) 305 300 // It effectively constructs a coroutine by stealing the pthread stack 306 staticvoid * CtxInvokeProcessor(void * arg) {301 void * CtxInvokeProcessor(void * arg) { 307 302 processor * proc = (processor *) arg; 308 303 kernelTLS.this_processor = proc; … … 341 336 } 342 337 343 staticvoid start(processor * this) {338 void start(processor * this) { 344 339 __cfaabi_dbg_print_safe("Kernel : Starting core %p\n", this); 345 340 … … 547 542 //----------------------------------------------------------------------------- 548 543 // Kernel boot procedures 549 staticvoid kernel_startup(void) {544 void kernel_startup(void) { 550 545 verify( ! kernelTLS.preemption_state.enabled ); 551 546 __cfaabi_dbg_print_safe("Kernel : Starting\n"); … … 623 618 } 624 619 625 staticvoid kernel_shutdown(void) {620 void kernel_shutdown(void) { 626 621 __cfaabi_dbg_print_safe("\n--------------------------------------------------\nKernel : Shutting down\n"); 627 622 … … 660 655 // Kernel Quiescing 661 656 //============================================================================================= 662 static void halt(processor * this) with( *this ) { 657 658 void halt(processor * this) with( *this ) { 663 659 // verify( ! __atomic_load_n(&do_terminate, __ATOMIC_SEQ_CST) ); 664 660 … … 687 683 // Unexpected Terminating logic 688 684 //============================================================================================= 685 686 689 687 static __spinlock_t kernel_abort_lock; 690 688 static bool kernel_abort_called = false; -
src/libcfa/concurrency/kernel_private.h
r2514607d rcbdf565 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); 56 60 57 61 static inline void wake_fast(processor * this) { -
src/libcfa/concurrency/preemption.c
r2514607d rcbdf565 39 39 40 40 // FwdDeclarations : Signal handlers 41 staticvoid sigHandler_ctxSwitch( __CFA_SIGPARMS__ );42 staticvoid sigHandler_segv ( __CFA_SIGPARMS__ );43 staticvoid sigHandler_ill ( __CFA_SIGPARMS__ );44 staticvoid sigHandler_fpe ( __CFA_SIGPARMS__ );45 staticvoid sigHandler_abort ( __CFA_SIGPARMS__ );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__ ); 46 46 47 47 // FwdDeclarations : alarm thread main 48 staticvoid * alarm_loop( __attribute__((unused)) void * args );48 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 staticvoid ?{}(event_kernel_t & this) with( this ) {65 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 staticvoid tick_preemption() {87 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 staticvoid sigHandler_ctxSwitch( __CFA_SIGPARMS__ ) {352 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 staticvoid * alarm_loop( __attribute__((unused)) void * args ) {395 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
r2514607d rcbdf565 22 22 void kernel_stop_preemption(); 23 23 void update_preemption( processor * this, Duration duration ); 24 void tick_preemption(); 24 25 25 26 struct preemption_scope { -
src/tests/.expect/attributes.x64.txt
r2514607d rcbdf565 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; 90 91 __attribute__ ((unused,unused)) signed int *__f9__Pi_1; 91 92 }; … … 102 103 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); 103 104 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); 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); 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); 105 107 static inline void ___constructor__F_4sFdl_autogen___1(struct Fdl *___dst__4sFdl_1){ 106 108 ((void)((*___dst__4sFdl_1).__f1__i_1) /* ?{} */); … … 112 114 ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */); 113 115 ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */); 116 ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ?{} */); 114 117 ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */); 115 118 } … … 123 126 ((void)((*___dst__4sFdl_1).__f7__i_1=___src__4sFdl_1.__f7__i_1) /* ?{} */); 124 127 ((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) /* ?{} */); 125 129 ((void)((*___dst__4sFdl_1).__f9__Pi_1=___src__4sFdl_1.__f9__Pi_1) /* ?{} */); 126 130 } 127 131 static inline void ___destructor__F_4sFdl_autogen___1(struct Fdl *___dst__4sFdl_1){ 128 132 ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ^?{} */); 133 ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ^?{} */); 129 134 ((void)((*___dst__4sFdl_1).__f8__i_1) /* ^?{} */); 130 135 ((void)((*___dst__4sFdl_1).__f7__i_1) /* ^?{} */); … … 146 151 ((void)((*___dst__4sFdl_1).__f7__i_1=___src__4sFdl_1.__f7__i_1)); 147 152 ((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)); 148 154 ((void)((*___dst__4sFdl_1).__f9__Pi_1=___src__4sFdl_1.__f9__Pi_1)); 149 155 ((void)___constructor__F_4sFdl4sFdl_autogen___1((&___ret__4sFdl_1), (*___dst__4sFdl_1))); … … 159 165 ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */); 160 166 ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */); 167 ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ?{} */); 161 168 ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */); 162 169 } … … 170 177 ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */); 171 178 ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */); 179 ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ?{} */); 172 180 ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */); 173 181 } … … 181 189 ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */); 182 190 ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */); 191 ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ?{} */); 183 192 ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */); 184 193 } … … 192 201 ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */); 193 202 ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */); 203 ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ?{} */); 194 204 ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */); 195 205 } … … 203 213 ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */); 204 214 ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */); 215 ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ?{} */); 205 216 ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */); 206 217 } … … 214 225 ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */); 215 226 ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */); 227 ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ?{} */); 216 228 ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */); 217 229 } … … 225 237 ((void)((*___dst__4sFdl_1).__f7__i_1=__f7__i_1) /* ?{} */); 226 238 ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */); 239 ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ?{} */); 227 240 ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */); 228 241 } … … 236 249 ((void)((*___dst__4sFdl_1).__f7__i_1=__f7__i_1) /* ?{} */); 237 250 ((void)((*___dst__4sFdl_1).__f8__i_1=__f8__i_1) /* ?{} */); 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){ 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){ 241 255 ((void)((*___dst__4sFdl_1).__f1__i_1=__f1__i_1) /* ?{} */); 242 256 ((void)((*___dst__4sFdl_1).__f2__i_1=__f2__i_1) /* ?{} */); … … 247 261 ((void)((*___dst__4sFdl_1).__f7__i_1=__f7__i_1) /* ?{} */); 248 262 ((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) /* ?{} */); 249 276 ((void)((*___dst__4sFdl_1).__f9__Pi_1=__f9__Pi_1) /* ?{} */); 250 277 } … … 266 293 __attribute__ ((unused)) signed int **const ___retval_f2__CPPi_1; 267 294 } 268 __attribute__ ((unused,used,unused)) signed int (*__f3__FPA0i_i__1(signed int __anonymous_object 0))[];295 __attribute__ ((unused,used,unused)) signed int (*__f3__FPA0i_i__1(signed int __anonymous_object5))[]; 269 296 __attribute__ ((unused,unused)) signed int (*__f3__FPA0i_i__1(signed int __p__i_1))[]{ 270 297 __attribute__ ((unused)) signed int (*___retval_f3__PA0i_1)[]; 271 298 } 272 __attribute__ ((unused,used,unused)) signed int (*__f4__FFi_i____1())(signed int __anonymous_object 1);273 __attribute__ ((unused,unused)) signed int (*__f4__FFi_i____1())(signed int __anonymous_object 2){274 __attribute__ ((unused)) signed int (*___retval_f4__Fi_i__1)(signed int __anonymous_object 3);299 __attribute__ ((unused,used,unused)) signed int (*__f4__FFi_i____1())(signed int __anonymous_object6); 300 __attribute__ ((unused,unused)) signed int (*__f4__FFi_i____1())(signed int __anonymous_object7){ 301 __attribute__ ((unused)) signed int (*___retval_f4__Fi_i__1)(signed int __anonymous_object8); 275 302 } 276 303 signed int __vtr__Fi___1(){ … … 302 329 signed int __tpr2__Fi_PPi__1(__attribute__ ((unused,unused,unused,unused,unused,unused)) signed int **__Foo__PPi_1); 303 330 signed int __tpr3__Fi_Pi__1(__attribute__ ((unused,unused,unused)) signed int *__Foo__Pi_1); 304 signed int __tpr4__Fi_Fi_Pi___1(__attribute__ ((unused,unused)) signed int (*__anonymous_object 4)(__attribute__ ((unused,unused)) signed int __anonymous_object5[((unsigned long int )5)]));331 signed int __tpr4__Fi_Fi_Pi___1(__attribute__ ((unused,unused)) signed int (*__anonymous_object9)(__attribute__ ((unused,unused)) signed int __anonymous_object10[((unsigned long int )5)])); 305 332 signed int __tpr5__Fi_Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__Foo__Fi___1)()); 306 333 signed int __tpr6__Fi_Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__Foo__Fi___1)()); 307 signed int __tpr7__Fi_Fi_Fi_i____1(__attribute__ ((unused,unused)) signed int (*__anonymous_object 6)(__attribute__ ((unused)) signed int (*__anonymous_object7)(__attribute__ ((unused,unused)) signed int __anonymous_object8)));334 signed int __tpr7__Fi_Fi_Fi_i____1(__attribute__ ((unused,unused)) signed int (*__anonymous_object11)(__attribute__ ((unused)) signed int (*__anonymous_object12)(__attribute__ ((unused,unused)) signed int __anonymous_object13))); 308 335 signed int __ad__Fi___1(){ 309 336 __attribute__ ((unused)) signed int ___retval_ad__i_1; … … 359 386 ((void)sizeof(enum __anonymous4 )); 360 387 } 361 signed int __apd1__Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *__anonymous_object 9, __attribute__ ((unused,unused,unused)) signed int *__anonymous_object10);362 signed int __apd2__Fi_PPiPPi__1(__attribute__ ((unused,unused,unused,unused)) signed int **__anonymous_object1 1, __attribute__ ((unused,unused,unused,unused)) signed int **__anonymous_object12);363 signed int __apd3__Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *__anonymous_object1 3, __attribute__ ((unused,unused,unused)) signed int *__anonymous_object14);364 signed int __apd4__Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object 15)(), __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_object 17)(__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_object2 1)(), __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_object2 3)(__attribute__ ((unused)) signed int __anonymous_object24), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object25)(__attribute__ ((unused)) signed int __anonymous_object26));388 signed int __apd1__Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *__anonymous_object14, __attribute__ ((unused,unused,unused)) signed int *__anonymous_object15); 389 signed int __apd2__Fi_PPiPPi__1(__attribute__ ((unused,unused,unused,unused)) signed int **__anonymous_object16, __attribute__ ((unused,unused,unused,unused)) signed int **__anonymous_object17); 390 signed int __apd3__Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *__anonymous_object18, __attribute__ ((unused,unused,unused)) signed int *__anonymous_object19); 391 signed int __apd4__Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object20)(), __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_object22)(__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_object26)(), __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_object28)(__attribute__ ((unused)) signed int __anonymous_object29), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object30)(__attribute__ ((unused)) signed int __anonymous_object31)); 368 395 struct Vad { 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; 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)(); 372 400 }; 373 401 static inline void ___constructor__F_4sVad_autogen___1(struct Vad *___dst__4sVad_1); … … 375 403 static inline void ___destructor__F_4sVad_autogen___1(struct Vad *___dst__4sVad_1); 376 404 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)()); 377 409 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) /* ?{} */); 378 421 } 379 422 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) /* ?{} */); 380 434 } 381 435 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) /* ^?{} */); 382 447 } 383 448 static inline struct Vad ___operator_assign__F4sVad_4sVad4sVad_autogen___1(struct Vad *___dst__4sVad_1, struct Vad ___src__4sVad_1){ 384 449 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)); 385 461 ((void)___constructor__F_4sVad4sVad_autogen___1((&___ret__4sVad_1), (*___dst__4sVad_1))); 386 462 return ___ret__4sVad_1; 387 463 } 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
r2514607d rcbdf565 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; 90 91 __attribute__ ((unused,unused)) signed int *__f9__Pi_1; 91 92 }; … … 102 103 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); 103 104 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); 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); 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); 105 107 static inline void ___constructor__F_4sFdl_autogen___1(struct Fdl *___dst__4sFdl_1){ 106 108 ((void)((*___dst__4sFdl_1).__f1__i_1) /* ?{} */); … … 112 114 ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */); 113 115 ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */); 116 ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ?{} */); 114 117 ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */); 115 118 } … … 123 126 ((void)((*___dst__4sFdl_1).__f7__i_1=___src__4sFdl_1.__f7__i_1) /* ?{} */); 124 127 ((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) /* ?{} */); 125 129 ((void)((*___dst__4sFdl_1).__f9__Pi_1=___src__4sFdl_1.__f9__Pi_1) /* ?{} */); 126 130 } 127 131 static inline void ___destructor__F_4sFdl_autogen___1(struct Fdl *___dst__4sFdl_1){ 128 132 ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ^?{} */); 133 ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ^?{} */); 129 134 ((void)((*___dst__4sFdl_1).__f8__i_1) /* ^?{} */); 130 135 ((void)((*___dst__4sFdl_1).__f7__i_1) /* ^?{} */); … … 146 151 ((void)((*___dst__4sFdl_1).__f7__i_1=___src__4sFdl_1.__f7__i_1)); 147 152 ((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)); 148 154 ((void)((*___dst__4sFdl_1).__f9__Pi_1=___src__4sFdl_1.__f9__Pi_1)); 149 155 ((void)___constructor__F_4sFdl4sFdl_autogen___1((&___ret__4sFdl_1), (*___dst__4sFdl_1))); … … 159 165 ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */); 160 166 ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */); 167 ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ?{} */); 161 168 ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */); 162 169 } … … 170 177 ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */); 171 178 ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */); 179 ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ?{} */); 172 180 ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */); 173 181 } … … 181 189 ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */); 182 190 ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */); 191 ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ?{} */); 183 192 ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */); 184 193 } … … 192 201 ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */); 193 202 ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */); 203 ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ?{} */); 194 204 ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */); 195 205 } … … 203 213 ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */); 204 214 ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */); 215 ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ?{} */); 205 216 ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */); 206 217 } … … 214 225 ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */); 215 226 ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */); 227 ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ?{} */); 216 228 ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */); 217 229 } … … 225 237 ((void)((*___dst__4sFdl_1).__f7__i_1=__f7__i_1) /* ?{} */); 226 238 ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */); 239 ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ?{} */); 227 240 ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */); 228 241 } … … 236 249 ((void)((*___dst__4sFdl_1).__f7__i_1=__f7__i_1) /* ?{} */); 237 250 ((void)((*___dst__4sFdl_1).__f8__i_1=__f8__i_1) /* ?{} */); 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){ 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){ 241 255 ((void)((*___dst__4sFdl_1).__f1__i_1=__f1__i_1) /* ?{} */); 242 256 ((void)((*___dst__4sFdl_1).__f2__i_1=__f2__i_1) /* ?{} */); … … 247 261 ((void)((*___dst__4sFdl_1).__f7__i_1=__f7__i_1) /* ?{} */); 248 262 ((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) /* ?{} */); 249 276 ((void)((*___dst__4sFdl_1).__f9__Pi_1=__f9__Pi_1) /* ?{} */); 250 277 } … … 266 293 __attribute__ ((unused)) signed int **const ___retval_f2__CPPi_1; 267 294 } 268 __attribute__ ((unused,used,unused)) signed int (*__f3__FPA0i_i__1(signed int __anonymous_object 0))[];295 __attribute__ ((unused,used,unused)) signed int (*__f3__FPA0i_i__1(signed int __anonymous_object5))[]; 269 296 __attribute__ ((unused,unused)) signed int (*__f3__FPA0i_i__1(signed int __p__i_1))[]{ 270 297 __attribute__ ((unused)) signed int (*___retval_f3__PA0i_1)[]; 271 298 } 272 __attribute__ ((unused,used,unused)) signed int (*__f4__FFi_i____1())(signed int __anonymous_object 1);273 __attribute__ ((unused,unused)) signed int (*__f4__FFi_i____1())(signed int __anonymous_object 2){274 __attribute__ ((unused)) signed int (*___retval_f4__Fi_i__1)(signed int __anonymous_object 3);299 __attribute__ ((unused,used,unused)) signed int (*__f4__FFi_i____1())(signed int __anonymous_object6); 300 __attribute__ ((unused,unused)) signed int (*__f4__FFi_i____1())(signed int __anonymous_object7){ 301 __attribute__ ((unused)) signed int (*___retval_f4__Fi_i__1)(signed int __anonymous_object8); 275 302 } 276 303 signed int __vtr__Fi___1(){ … … 302 329 signed int __tpr2__Fi_PPi__1(__attribute__ ((unused,unused,unused,unused,unused,unused)) signed int **__Foo__PPi_1); 303 330 signed int __tpr3__Fi_Pi__1(__attribute__ ((unused,unused,unused)) signed int *__Foo__Pi_1); 304 signed int __tpr4__Fi_Fi_Pi___1(__attribute__ ((unused,unused)) signed int (*__anonymous_object 4)(__attribute__ ((unused,unused)) signed int __anonymous_object5[((unsigned int )5)]));331 signed int __tpr4__Fi_Fi_Pi___1(__attribute__ ((unused,unused)) signed int (*__anonymous_object9)(__attribute__ ((unused,unused)) signed int __anonymous_object10[((unsigned int )5)])); 305 332 signed int __tpr5__Fi_Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__Foo__Fi___1)()); 306 333 signed int __tpr6__Fi_Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__Foo__Fi___1)()); 307 signed int __tpr7__Fi_Fi_Fi_i____1(__attribute__ ((unused,unused)) signed int (*__anonymous_object 6)(__attribute__ ((unused)) signed int (*__anonymous_object7)(__attribute__ ((unused,unused)) signed int __anonymous_object8)));334 signed int __tpr7__Fi_Fi_Fi_i____1(__attribute__ ((unused,unused)) signed int (*__anonymous_object11)(__attribute__ ((unused)) signed int (*__anonymous_object12)(__attribute__ ((unused,unused)) signed int __anonymous_object13))); 308 335 signed int __ad__Fi___1(){ 309 336 __attribute__ ((unused)) signed int ___retval_ad__i_1; … … 359 386 ((void)sizeof(enum __anonymous4 )); 360 387 } 361 signed int __apd1__Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *__anonymous_object 9, __attribute__ ((unused,unused,unused)) signed int *__anonymous_object10);362 signed int __apd2__Fi_PPiPPi__1(__attribute__ ((unused,unused,unused,unused)) signed int **__anonymous_object1 1, __attribute__ ((unused,unused,unused,unused)) signed int **__anonymous_object12);363 signed int __apd3__Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *__anonymous_object1 3, __attribute__ ((unused,unused,unused)) signed int *__anonymous_object14);364 signed int __apd4__Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object 15)(), __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_object 17)(__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_object2 1)(), __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_object2 3)(__attribute__ ((unused)) signed int __anonymous_object24), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object25)(__attribute__ ((unused)) signed int __anonymous_object26));388 signed int __apd1__Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *__anonymous_object14, __attribute__ ((unused,unused,unused)) signed int *__anonymous_object15); 389 signed int __apd2__Fi_PPiPPi__1(__attribute__ ((unused,unused,unused,unused)) signed int **__anonymous_object16, __attribute__ ((unused,unused,unused,unused)) signed int **__anonymous_object17); 390 signed int __apd3__Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *__anonymous_object18, __attribute__ ((unused,unused,unused)) signed int *__anonymous_object19); 391 signed int __apd4__Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object20)(), __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_object22)(__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_object26)(), __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_object28)(__attribute__ ((unused)) signed int __anonymous_object29), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object30)(__attribute__ ((unused)) signed int __anonymous_object31)); 368 395 struct Vad { 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; 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)(); 372 400 }; 373 401 static inline void ___constructor__F_4sVad_autogen___1(struct Vad *___dst__4sVad_1); … … 375 403 static inline void ___destructor__F_4sVad_autogen___1(struct Vad *___dst__4sVad_1); 376 404 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)()); 377 409 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) /* ?{} */); 378 421 } 379 422 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) /* ?{} */); 380 434 } 381 435 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) /* ^?{} */); 382 447 } 383 448 static inline struct Vad ___operator_assign__F4sVad_4sVad4sVad_autogen___1(struct Vad *___dst__4sVad_1, struct Vad ___src__4sVad_1){ 384 449 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)); 385 461 ((void)___constructor__F_4sVad4sVad_autogen___1((&___ret__4sVad_1), (*___dst__4sVad_1))); 386 462 return ___ret__4sVad_1; 387 463 } 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
r2514607d rcbdf565 17 17 18 18 19 declarationErrors.c:22:1 error: duplicate static in declaration of x6: static const volatile Int19 declarationErrors.c:22:1 error: duplicate static in declaration of x6: static const volatile instance of type Int 20 20 21 21 declarationErrors.c:24:1 error: duplicate const in declaration of f01: static inline function -
src/tests/attributes.c
r2514607d rcbdf565 10 10 // Created On : Mon Feb 6 16:07:02 2017 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Jul 19 13:50:51201813 // Update Count : 1512 // Last Modified On : Sun Jul 8 21:12:07 2018 13 // Update Count : 8 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 )); 44 45 int ( ( * (f9) __attribute__(( unused )) ) __attribute__(( unused )) ); 45 46 }; … … 148 149 struct Vad { 149 150 int __attribute__(( unused )); 150 int __attribute__(( unused )) :4; 151 int __attribute__(( unused )) :4, __attribute__(( unused )) :6; 151 int __attribute__(( unused )) * __attribute__(( unused )); 152 int __attribute__(( unused )) [10] __attribute__(( unused )); 153 int __attribute__(( unused )) (*)() __attribute__(( unused )); 152 154 }; 153 155
Note:
See TracChangeset
for help on using the changeset viewer.