Changeset aeec6b7 for src


Ignore:
Timestamp:
Jul 10, 2018, 8:20:50 AM (7 years ago)
Author:
Rob Schluntz <rschlunt@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, no_list, persistent-indexer, pthread-emulation, qualifiedEnum
Children:
3d7e53b
Parents:
036dd5f (diff), 97be800 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' of plg.uwaterloo.ca:/u/cforall/software/cfa/cfa-cc

Location:
src
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • src/Common/ScopedMap.h

    r036dd5f raeec6b7  
    2222#include <vector>
    2323
     24/// Default (empty) ScopedMap note type
     25struct EmptyNote {};
     26
    2427/// A map where the items are placed into nested scopes;
    25 /// inserted items are placed into the innermost scope, lookup looks from the innermost scope outward
    26 template<typename Key, typename Value>
     28/// inserted items are placed into the innermost scope, lookup looks from the innermost scope outward.
     29/// Scopes may be annotated with a value; the annotation defaults to empty
     30template<typename Key, typename Value, typename Note = EmptyNote>
    2731class ScopedMap {
    28         typedef std::map< Key, Value > Scope;
     32        typedef std::map< Key, Value > MapType;
     33        struct Scope {
     34                MapType map;
     35                Note note;
     36
     37                template<typename N>
     38                Scope(N&& n) : map(), note(std::forward<N>(n)) {}
     39               
     40                Scope() = default;
     41                Scope(const Scope&) = default;
     42                Scope(Scope&&) = default;
     43                Scope& operator= (const Scope&) = default;
     44                Scope& operator= (Scope&&) = default;
     45        };
    2946        typedef std::vector< Scope > ScopeList;
    3047
    3148        ScopeList scopes; ///< scoped list of maps
    3249public:
    33         typedef typename Scope::key_type key_type;
    34         typedef typename Scope::mapped_type mapped_type;
    35         typedef typename Scope::value_type value_type;
     50        typedef typename MapType::key_type key_type;
     51        typedef typename MapType::mapped_type mapped_type;
     52        typedef typename MapType::value_type value_type;
    3653        typedef typename ScopeList::size_type size_type;
    3754        typedef typename ScopeList::difference_type difference_type;
    38         typedef typename Scope::reference reference;
    39         typedef typename Scope::const_reference const_reference;
    40         typedef typename Scope::pointer pointer;
    41         typedef typename Scope::const_pointer const_pointer;
     55        typedef typename MapType::reference reference;
     56        typedef typename MapType::const_reference const_reference;
     57        typedef typename MapType::pointer pointer;
     58        typedef typename MapType::const_pointer const_pointer;
    4259
    4360        class iterator : public std::iterator< std::bidirectional_iterator_tag,
     
    4562        friend class ScopedMap;
    4663        friend class const_iterator;
    47                 typedef typename std::map< Key, Value >::iterator wrapped_iterator;
    48                 typedef typename std::vector< std::map< Key, Value > > scope_list;
     64                typedef typename ScopedMap::MapType::iterator wrapped_iterator;
     65                typedef typename ScopedMap::ScopeList scope_list;
    4966                typedef typename scope_list::size_type size_type;
    5067
    5168                /// Checks if this iterator points to a valid item
    5269                bool is_valid() const {
    53                         return it != (*scopes)[level].end();
     70                        return it != (*scopes)[level].map.end();
    5471                }
    5572
     
    7996
    8097                iterator& operator++ () {
    81                         if ( it == (*scopes)[level].end() ) {
     98                        if ( it == (*scopes)[level].map.end() ) {
    8299                                if ( level == 0 ) return *this;
    83100                                --level;
    84                                 it = (*scopes)[level].begin();
     101                                it = (*scopes)[level].map.begin();
    85102                        } else {
    86103                                ++it;
     
    92109                iterator& operator-- () {
    93110                        // may fail if this is the begin iterator; allowed by STL spec
    94                         if ( it == (*scopes)[level].begin() ) {
     111                        if ( it == (*scopes)[level].map.begin() ) {
    95112                                ++level;
    96                                 it = (*scopes)[level].end();
     113                                it = (*scopes)[level].map.end();
    97114                        }
    98115                        --it;
     
    107124
    108125                size_type get_level() const { return level; }
     126
     127                Note& get_note() { return (*scopes)[level].note; }
     128                const Note& get_note() const { return (*scopes)[level].note; }
    109129
    110130        private:
     
    117137                                                     value_type > {
    118138        friend class ScopedMap;
    119                 typedef typename std::map< Key, Value >::iterator wrapped_iterator;
    120                 typedef typename std::map< Key, Value >::const_iterator wrapped_const_iterator;
    121                 typedef typename std::vector< std::map< Key, Value > > scope_list;
     139                typedef typename ScopedMap::MapType::iterator wrapped_iterator;
     140                typedef typename ScopedMap::MapType::const_iterator wrapped_const_iterator;
     141                typedef typename ScopedMap::ScopeList scope_list;
    122142                typedef typename scope_list::size_type size_type;
    123143
    124144                /// Checks if this iterator points to a valid item
    125145                bool is_valid() const {
    126                         return it != (*scopes)[level].end();
     146                        return it != (*scopes)[level].map.end();
    127147                }
    128148
     
    157177
    158178                const_iterator& operator++ () {
    159                         if ( it == (*scopes)[level].end() ) {
     179                        if ( it == (*scopes)[level].map.end() ) {
    160180                                if ( level == 0 ) return *this;
    161181                                --level;
    162                                 it = (*scopes)[level].begin();
     182                                it = (*scopes)[level].map.begin();
    163183                        } else {
    164184                                ++it;
     
    170190                const_iterator& operator-- () {
    171191                        // may fail if this is the begin iterator; allowed by STL spec
    172                         if ( it == (*scopes)[level].begin() ) {
     192                        if ( it == (*scopes)[level].map.begin() ) {
    173193                                ++level;
    174                                 it = (*scopes)[level].end();
     194                                it = (*scopes)[level].map.end();
    175195                        }
    176196                        --it;
     
    185205
    186206                size_type get_level() const { return level; }
     207
     208                const Note& get_note() const { return (*scopes)[level].note; }
    187209
    188210        private:
     
    197219        }
    198220
     221        // Starts a new scope with the given note
     222        template<typename N>
     223        void beginScope( N&& n ) {
     224                scopes.emplace_back( std::forward<N>(n) );
     225        }
     226
    199227        /// Ends a scope; invalidates any iterators pointing to elements of that scope
    200228        void endScope() {
     
    204232
    205233        /// Default constructor initializes with one scope
    206         ScopedMap() { beginScope(); }
    207 
    208         iterator begin() { return iterator(scopes, scopes.back().begin(), currentScope()).next_valid(); }
    209         const_iterator begin() const { return const_iterator(scopes, scopes.back().begin(), currentScope()).next_valid(); }
    210         const_iterator cbegin() const { return const_iterator(scopes, scopes.back().begin(), currentScope()).next_valid(); }
    211         iterator end() { return iterator(scopes, scopes[0].end(), 0); }
    212         const_iterator end() const { return const_iterator(scopes, scopes[0].end(), 0); }
    213         const_iterator cend() const { return const_iterator(scopes, scopes[0].end(), 0); }
     234        ScopedMap() : scopes() { beginScope(); }
     235
     236        /// Constructs with a given note on the outermost scope
     237        template<typename N>
     238        ScopedMap( N&& n ) : scopes() { beginScope(std::forward<N>(n)); }
     239
     240        iterator begin() { return iterator(scopes, scopes.back().map.begin(), currentScope()).next_valid(); }
     241        const_iterator begin() const { return const_iterator(scopes, scopes.back().map.begin(), currentScope()).next_valid(); }
     242        const_iterator cbegin() const { return const_iterator(scopes, scopes.back().map.begin(), currentScope()).next_valid(); }
     243        iterator end() { return iterator(scopes, scopes[0].map.end(), 0); }
     244        const_iterator end() const { return const_iterator(scopes, scopes[0].map.end(), 0); }
     245        const_iterator cend() const { return const_iterator(scopes, scopes[0].map.end(), 0); }
    214246
    215247        /// Gets the index of the current scope (counted from 1)
    216248        size_type currentScope() const { return scopes.size() - 1; }
     249
     250        /// Gets the note at the given scope
     251        Note& getNote( size_type i ) { return scopes[i].note; }
     252        const Note& getNote( size_type i ) const { return scopes[i].note; }
    217253
    218254        /// Finds the given key in the outermost scope it occurs; returns end() for none such
    219255        iterator find( const Key &key ) {
    220256                for ( size_type i = scopes.size() - 1; ; --i ) {
    221                         typename Scope::iterator val = scopes[i].find( key );
    222                         if ( val != scopes[i].end() ) return iterator( scopes, val, i );
     257                        typename MapType::iterator val = scopes[i].map.find( key );
     258                        if ( val != scopes[i].map.end() ) return iterator( scopes, val, i );
    223259                        if ( i == 0 ) break;
    224260                }
     
    226262        }
    227263        const_iterator find( const Key &key ) const {
    228                         return const_iterator( const_cast< ScopedMap< Key, Value >* >(this)->find( key ) );
     264                        return const_iterator( const_cast< ScopedMap< Key, Value, Note >* >(this)->find( key ) );
    229265        }
    230266
    231267        /// Finds the given key in the provided scope; returns end() for none such
    232268        iterator findAt( size_type scope, const Key& key ) {
    233                 typename Scope::iterator val = scopes[scope].find( key );
    234                 if ( val != scopes[scope].end() ) return iterator( scopes, val, scope );
     269                typename MapType::iterator val = scopes[scope].map.find( key );
     270                if ( val != scopes[scope].map.end() ) return iterator( scopes, val, scope );
    235271                return end();
    236272        }
    237273        const_iterator findAt( size_type scope, const Key& key ) const {
    238                 return const_iterator( const_cast< ScopedMap< Key, Value >* >(this)->findAt( scope, key ) );
     274                return const_iterator( const_cast< ScopedMap< Key, Value, Note >* >(this)->findAt( scope, key ) );
    239275        }
    240276
     
    243279                if ( it.level == 0 ) return end();
    244280                for ( size_type i = it.level - 1; ; --i ) {
    245                         typename Scope::iterator val = scopes[i].find( key );
    246                         if ( val != scopes[i].end() ) return iterator( scopes, val, i );
     281                        typename MapType::iterator val = scopes[i].map.find( key );
     282                        if ( val != scopes[i].map.end() ) return iterator( scopes, val, i );
    247283                        if ( i == 0 ) break;
    248284                }
     
    250286        }
    251287        const_iterator findNext( const_iterator &it, const Key &key ) const {
    252                         return const_iterator( const_cast< ScopedMap< Key, Value >* >(this)->findNext( it, key ) );
     288                        return const_iterator( const_cast< ScopedMap< Key, Value, Note >* >(this)->findNext( it, key ) );
    253289        }
    254290
     
    256292        template< typename value_type_t >
    257293        std::pair< iterator, bool > insert( value_type_t&& value ) {
    258                 std::pair< typename Scope::iterator, bool > res = scopes.back().insert( std::forward<value_type_t>( value ) );
     294                std::pair< typename MapType::iterator, bool > res = scopes.back().map.insert( std::forward<value_type_t>( value ) );
    259295                return std::make_pair( iterator(scopes, std::move( res.first ), scopes.size()-1), std::move( res.second ) );
    260296        }
     
    262298        template< typename value_type_t >
    263299        std::pair< iterator, bool > insert( iterator at, value_type_t&& value ) {
    264                 Scope& scope = (*at.scopes) [ at.level ];
    265                 std::pair< typename Scope::iterator, bool > res = scope.insert( std::forward<value_type_t>( value ) );
     300                MapType& scope = (*at.scopes)[ at.level ].map;
     301                std::pair< typename MapType::iterator, bool > res = scope.insert( std::forward<value_type_t>( value ) );
    266302                return std::make_pair( iterator(scopes, std::move( res.first ), at.level), std::move( res.second ) );
    267303        }
     
    272308        template< typename value_type_t >
    273309        std::pair< iterator, bool > insertAt( size_type scope, value_type_t&& value ) {
    274                 std::pair< typename Scope::iterator, bool > res = scopes.at(scope).insert( std::forward<value_type_t>( value ) );
     310                std::pair< typename MapType::iterator, bool > res = scopes.at(scope).map.insert( std::forward<value_type_t>( value ) );
    275311                return std::make_pair( iterator(scopes, std::move( res.first ), scope), std::move( res.second ) );
    276312        }
     
    288324
    289325        iterator erase( iterator pos ) {
    290                 Scope& scope = (*pos.scopes) [ pos.level ];
     326                MapType& scope = (*pos.scopes)[ pos.level ].map;
    291327                const typename iterator::wrapped_iterator& new_it = scope.erase( pos.it );
    292328                iterator it( *pos.scopes, new_it, pos.level );
  • src/Parser/TypedefTable.cc

    r036dd5f raeec6b7  
    9191
    9292void TypedefTable::enterScope() {
    93         kindTable.beginScope();
     93        kindTable.beginScope(0);
    9494        debugPrint( cerr << "Entering scope " << kindTable.currentScope() << endl; print() );
    9595} // TypedefTable::enterScope
  • src/Parser/TypedefTable.h

    r036dd5f raeec6b7  
    2323
    2424class TypedefTable {
    25         typedef ScopedMap< std::string, int > KindTable;
     25        typedef ScopedMap< std::string, int, int > KindTable;
    2626        KindTable kindTable;   
    27         unsigned int level = 0;
     27        unsigned int level;
    2828  public:
     29    TypedefTable() : kindTable{0}, level{0} {}
    2930        ~TypedefTable();
    3031
  • src/Parser/lex.ll

    r036dd5f raeec6b7  
    464464void yyerror( const char * errmsg ) {
    465465        SemanticErrorThrow = true;
    466         cout << (yyfilename ? yyfilename : "*unknown file*") << ':' << yylineno << ':' << column - yyleng + 1
     466        cerr << (yyfilename ? yyfilename : "*unknown file*") << ':' << yylineno << ':' << column - yyleng + 1
    467467                 << ": " << ErrorHelpers::error_str() << errmsg << " at token \"" << (yytext[0] == '\0' ? "EOF" : yytext) << '"' << endl;
    468468}
  • src/prelude/Makefile.am

    r036dd5f raeec6b7  
    4343
    4444prelude.cf : prelude-gen.cc
    45         ${AM_V_GEN}${CXX} ${AM_CXXFLAGS} ${CXXFLAGS} ${<} -o prelude-gen
     45        ${AM_V_GEN}${CXX} ${AM_CXXFLAGS} ${CXXFLAGS} ${<} -o prelude-gen -Wall -Wextra -O2 -g -std=c++14
    4646        @./prelude-gen > $@
    4747        @rm ./prelude-gen
     
    6767        rm -rf $(DEPDIR)
    6868
    69 MAINTAINERCLEANFILES = gcc-builtins.c gcc-builtins.cf builtins.cf extras.cf bootloader.c ${addprefix ${libdir}/,${cfalib_DATA}} ${addprefix ${libdir}/,${lib_LIBRARIES}}
     69MAINTAINERCLEANFILES = gcc-builtins.c gcc-builtins.cf builtins.cf extras.cf bootloader.c prelude.cf ${addprefix ${libdir}/,${cfalib_DATA}} ${addprefix ${libdir}/,${lib_LIBRARIES}}
  • src/prelude/Makefile.in

    r036dd5f raeec6b7  
    281281cfalib_DATA = gcc-builtins.cf builtins.cf extras.cf prelude.cf bootloader.c
    282282noinst_DATA = ../libcfa/libcfa-prelude.c
    283 MAINTAINERCLEANFILES = gcc-builtins.c gcc-builtins.cf builtins.cf extras.cf bootloader.c ${addprefix ${libdir}/,${cfalib_DATA}} ${addprefix ${libdir}/,${lib_LIBRARIES}}
     283MAINTAINERCLEANFILES = gcc-builtins.c gcc-builtins.cf builtins.cf extras.cf bootloader.c prelude.cf ${addprefix ${libdir}/,${cfalib_DATA}} ${addprefix ${libdir}/,${lib_LIBRARIES}}
    284284all: all-am
    285285
     
    512512
    513513prelude.cf : prelude-gen.cc
    514         ${AM_V_GEN}${CXX} ${AM_CXXFLAGS} ${CXXFLAGS} ${<} -o prelude-gen
     514        ${AM_V_GEN}${CXX} ${AM_CXXFLAGS} ${CXXFLAGS} ${<} -o prelude-gen -Wall -Wextra -O2 -g -std=c++14
    515515        @./prelude-gen > $@
    516516        @rm ./prelude-gen
  • src/prelude/prelude-gen.cc

    r036dd5f raeec6b7  
    121121                if(mask & (1 << i)) {
    122122                        result += name;
     123                } else {
     124                        result.append(name.size(), ' ');
    123125                }
    124126                i++;
     
    148150        cout << endl;
    149151
    150         cout << "void   ?{}( zero_t & );" << endl;
    151         cout << "void   ?{}( one_t & );" << endl;
    152         cout << "void   ?{}( zero_t &, zero_t );" << endl;
    153         cout << "void   ?{}( one_t &, one_t );" << endl;
    154         cout << "void   ^?{}( zero_t & );" << endl;
    155         cout << "void   ^?{}( one_t & );" << endl;
    156         cout << "zero_t                 ?=?( zero_t &, zero_t );" << endl;
    157         cout << "one_t                  ?=?( one_t &, one_t );" << endl;
    158152        cout << "signed int ?==?( zero_t, zero_t ),                                                     ?!=?( zero_t, zero_t );" << endl;
    159153        cout << "signed int ?==?( one_t, one_t ),                                                       ?!=?( one_t, one_t );" << endl;
    160 
    161154        cout << "signed int ?==?( _Bool, _Bool ),                                                       ?!=?( _Bool, _Bool );" << endl;
    162         cout << "void   ?{}( _Bool & );" << endl;
    163         cout << "void   ?{}( _Bool &, _Bool );" << endl;
    164         cout << "void   ^?{}( _Bool & );" << endl;
    165         cout << "_Bool                  ?=?( _Bool &, _Bool ),                                  ?=?( volatile _Bool &, _Bool );" << endl;
    166155        cout << "signed int     !?( _Bool );" << endl;
    167 
    168         cout << "void   ^?{}( char & );" << endl;
    169         cout << "void   ^?{}( char unsigned & );" << endl;
    170         cout << "void   ^?{}( char signed & );" << endl;
    171         cout << "void   ?{}( char &, char );" << endl;
    172         cout << "void   ?{}( unsigned char &, unsigned char );" << endl;
    173         cout << "void   ?{}( char signed &, char signed );" << endl;
    174         cout << "void   ?{}( char & );" << endl;
    175         cout << "void   ?{}( unsigned char & );" << endl;
    176         cout << "void   ?{}( char signed & );" << endl;
    177         cout << "char                   ?=?( char &, char ),                                    ?=?( volatile char &, char );" << endl;
    178         cout << "char signed            ?=?( char signed &, char signed ),                      ?=?( volatile char signed &, char signed );" << endl;
    179         cout << "char unsigned          ?=?( char unsigned &, char unsigned ),                  ?=?( volatile char unsigned &, char unsigned );" << endl;
    180 
    181156
    182157        for (auto op : arithmeticOperators) {
     
    213188        cout << "// Arithmetic Constructors //" << endl;
    214189        cout << "/////////////////////////////" << endl;
     190        auto otype = [](const std::string & type, bool do_volatile = false) {
     191                cout << "void \t?{} ( " << type << " & );" << endl;
     192                cout << "void \t?{} ( " << type << " &, " << type << " );" << endl;
     193                cout << type << " \t?=? ( " << type << " &, " << type << " )";
     194                if( do_volatile ) {
     195                        cout << ", \t?=?( volatile " << type << " &, " << type << " )";
     196                }
     197                cout << ";" << endl;
     198                cout << "void \t^?{}( " << type << " & );" << endl;
     199        };
     200
     201        otype("zero_t");
     202        otype("one_t");
     203        otype("_Bool", true);
     204        otype("char", true);
     205        otype("signed char", true);
     206        otype("unsigned char", true);
     207
    215208        for (auto type : basicTypes) {
    216209                cout << "void  ?{}(" << type.name << " &);" << endl;
     
    227220        cout << "forall(ftype FT) void  ?{}( FT * volatile &, FT * );" << endl;
    228221
    229         // generate qualifiers for first and second parameters of copy constructors
     222        // generate qualifiers
     223        vector<string> qualifiersSingle;
    230224        vector<pair<const string, const string>> qualifiersPair;
    231225        const unsigned int NQ = 2;
    232226        for(unsigned int lhs = 0; lhs < (1<<NQ); lhs++) {
     227                // for parameter of default constructor and destructor
     228                qualifiersSingle.push_back(mask2string(lhs, make_array("const "s, "volatile "s)));
     229
     230                // for first and second parameters of copy constructors
    233231                for(unsigned int rhs = 0; rhs < (1<<NQ); rhs++) {
    234232                        if((lhs & rhs) == rhs) {
     
    241239        }
    242240
    243         for (auto type : { "DT", "void" }) {
    244                 for (auto q : qualifiersPair) {
    245                         cout << "forall(dtype DT) void  ?{}(" << q.first << type << " *&, " << q.second << "DT *);" << endl;
    246                 }
    247         }
    248 
    249 
    250         // generate qualifiers for parameter of default constructor and destructor
    251         vector<string> qualifiersSingle;
    252         for (unsigned int lhs = 0; lhs < (1<<NQ); lhs++) {
    253                 qualifiersSingle.push_back(mask2string(lhs, make_array("const "s, "volatile "s)));
    254         }
    255 
    256         for (auto type : { "DT", "void" }) {
    257                 for (auto q : qualifiersSingle) {
    258                         cout << "forall(dtype DT) void  ?{}(" << q << type << " *&);" << endl;
    259                         cout << "forall(dtype DT) void ^?{}(" << q << type << " *&);" << endl;
    260                 }
    261         }
    262         cout << endl;
    263 
    264         cout << "forall(dtype DT) void ?{}(                 DT *          &, zero_t );" << endl;
    265         cout << "forall(dtype DT) void ?{}(                 DT * volatile &, zero_t );" << endl;
    266         cout << "forall(dtype DT) void ?{}( const           DT *          &, zero_t );" << endl;
    267         cout << "forall(dtype DT) void ?{}( volatile        DT *          &, zero_t );" << endl;
    268         cout << "forall(dtype DT) void ?{}( volatile        DT * volatile &, zero_t );" << endl;
    269         cout << "forall(dtype DT) void ?{}( const volatile DT *   &, zero_t );" << endl;
     241        for (auto type : { "  DT", "void" }) {
     242                for (auto cvq : qualifiersPair) {
     243                        for (auto is_vol : { "        ", "volatile" }) {
     244                                cout << "forall(dtype DT) void  ?{}(" << cvq.first << type << " * " << is_vol << " &, " << cvq.second << "DT *);" << endl;
     245                        }
     246                }
     247                for (auto cvq : qualifiersSingle) {
     248                        for (auto is_vol : { "        ", "volatile" }) {
     249                                cout << "forall(dtype DT) void  ?{}(" << cvq << type << " * " << is_vol << " &);" << endl;
     250                        }
     251                        for (auto is_vol : { "        ", "volatile" }) {
     252                                cout << "forall(dtype DT) void ^?{}(" << cvq << type << " * " << is_vol << " &);" << endl;
     253                        }
     254                }
     255        }
     256
     257        {
     258                auto type = "  DT";
     259                for (auto is_vol : { "        ", "volatile" }) {
     260                        for (auto cvq : qualifiersSingle) {
     261                                cout << "forall(dtype DT) void ?{}( " << cvq << type << " * " << is_vol << " &, zero_t);" << endl;
     262                        }
     263                }
     264        }
     265
     266        cout << endl;
     267
    270268        cout << "forall(ftype FT) void  ?{}( FT *          &, zero_t ); " << endl;
     269        cout << "forall(ftype FT) FT *                  ?=?( FT *          &, zero_t );" << endl;
     270        cout << "forall(ftype FT) FT *                  ?=?( FT * volatile &, zero_t );" << endl;
    271271        cout << "forall( ftype FT ) void        ?{}( FT *          & );" << endl;
    272272        cout << "forall( ftype FT ) void        ^?{}( FT *         & );" << endl;
     
    285285
    286286
    287         cout << "forall( dtype DT ) void *               ?=?(                void *          &,                 DT * );" << endl;
    288         cout << "forall( dtype DT ) void *               ?=?(                void * volatile &,                 DT * );" << endl;
    289         cout << "forall( dtype DT ) const void *                 ?=?( const          void *          &,                 DT * );" << endl;
    290         cout << "forall( dtype DT ) const void *                 ?=?( const          void * volatile &,                 DT * );" << endl;
    291         cout << "forall( dtype DT ) const void *                 ?=?( const          void *          &, const           DT * );" << endl;
    292         cout << "forall( dtype DT ) const void *                 ?=?( const          void * volatile &, const           DT * );" << endl;
    293         cout << "forall( dtype DT ) volatile void *      ?=?(       volatile void *          &,                 DT * );" << endl;
    294         cout << "forall( dtype DT ) volatile void *      ?=?(       volatile void * volatile &,                 DT * );" << endl;
    295         cout << "forall( dtype DT ) volatile void *      ?=?(       volatile void *          &,       volatile  DT * );" << endl;
    296         cout << "forall( dtype DT ) volatile void *      ?=?(       volatile void * volatile &,       volatile  DT * );" << endl;
    297         cout << "forall( dtype DT ) const volatile void * ?=?( const volatile void *         &,                 DT * );" << endl;
    298         cout << "forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile &,                        DT * );" << endl;
    299         cout << "forall( dtype DT ) const volatile void * ?=?( const volatile void *         &, const           DT * );" << endl;
    300         cout << "forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile &, const          DT * );" << endl;
    301         cout << "forall( dtype DT ) const volatile void * ?=?( const volatile void *         &,       volatile  DT * );" << endl;
    302         cout << "forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile &,              volatile  DT * );" << endl;
    303         cout << "forall( dtype DT ) const volatile void * ?=?( const volatile void *         &, const volatile  DT * );" << endl;
    304         cout << "forall( dtype DT ) const volatile void * ?=?( const volatile void * volatile &, const volatile DT * );" << endl;
    305 
    306287        for (auto op : pointerOperators) {
     288                auto forall = [&op]() {
     289                        cout << "forall(dtype DT" << op.sized << ") ";
     290                };
    307291                for (auto type : { "DT"/*, "void"*/ } ) {
    308292                        auto operands = count(op.name.begin(), op.name.end(), '?');
     
    313297                                                if (operands == 1) {
    314298                                                        for (auto q : qualifiersSingle){
    315                                                                 for (auto q2 : { " ", " volatile " }) {
    316                                                                         cout << "forall(dtype DT" << op.sized <<  ") ";
     299                                                                for (auto q2 : { "        ", "volatile" }) {
     300                                                                        forall();
    317301                                                                        cout << q << type << " * " << op.name << "(";
    318                                                                         cout << q << type << " *" << q2 << "&";
     302                                                                        cout << q << type << " * " << q2 << " &";
    319303                                                                        cout << ");" << endl;
    320304                                                                }
     
    322306                                                } else {
    323307                                                        for (auto q : qualifiersPair){
    324                                                                 for (auto q2 : { " ", " volatile " }) {
    325                                                                         cout << "forall(dtype DT" << op.sized <<  ") ";
     308                                                                for (auto q2 : { "        ", "volatile" }) {
     309                                                                        forall();
    326310                                                                        cout << q.first << type << " * " << op.name << "(";
    327                                                                         cout << q.first << type << " *" << q2 << "&";
     311                                                                        cout << q.first << type << " * " << q2 << " &";
    328312
    329313                                                                        for (int i = 1; i < operands; ++i) {
     
    337321                                        case PtrDiff:
    338322                                                for (auto q : qualifiersSingle){
    339                                                         for (auto q2 : { " ", " volatile " }) {
    340                                                                 cout << "forall(dtype DT" << op.sized << ") ";
     323                                                        for (auto q2 : { "        ", "volatile" }) {
     324                                                                forall();
    341325                                                                cout << q << type << " * " << op.name << "(";
    342                                                                 cout << q << type << " *" << q2 << "&";
     326                                                                cout << q << type << " * " << q2 << " &";
    343327
    344328                                                                for (int i = 1; i < operands; ++i) {
     
    353337                                        }
    354338                        } else {
     339                                auto name_and_arg1 = [&op, &type](const std::string & q) {
     340                                        if (op.diffReturn == "&") cout << q << type << " &"; // -- qualifiers
     341                                        else if (op.diffReturn != "") cout << op.diffReturn;
     342                                        else cout << q << type << " *";
     343                                        cout << " " << op.name << "(";
     344                                };
    355345                                switch(op.diffArg2) {
    356346                                        case Normal:
    357347                                                for (auto q : qualifiersSingle) {
    358                                                         cout << "forall(dtype DT" << op.sized << ") ";
    359                                                         if (op.diffReturn == "&") cout << q << type << " &"; // -- qualifiers
    360                                                         else if (op.diffReturn != "") cout << op.diffReturn;
    361                                                         else cout << q << type << " *";
    362                                                         cout << " " << op.name << "(";
     348                                                        forall();
     349                                                        name_and_arg1( q );
    363350                                                        for (int i = 0; i < operands; ++i) {
    364351                                                                cout << q << type << " *";
     
    370357                                        case CommPtrDiff:
    371358                                                for (auto q : qualifiersSingle) {
    372                                                         cout << "forall(dtype DT" << op.sized << ") ";
    373                                                         if (op.diffReturn == "&") cout << q << type << " &"; // -- qualifiers
    374                                                         else if (op.diffReturn != "") cout << op.diffReturn;
    375                                                         else cout << q << type << " *";
    376                                                         cout << " " << op.name << "(ptrdiff_t, " << q << type << " *);" << endl;
     359                                                        forall();
     360                                                        name_and_arg1( q );
     361                                                        cout << "ptrdiff_t, " << q << type << " *);" << endl;
    377362                                                }
    378363                                                // fallthrough
    379364                                        case PtrDiff:
    380365                                                for (auto q : qualifiersSingle) {
    381                                                         cout << "forall(dtype DT" << op.sized << ") ";
    382                                                         if (op.diffReturn == "&") cout << q << type << " &"; // -- qualifiers
    383                                                         else if (op.diffReturn != "") cout << op.diffReturn;
    384                                                         else cout << q << type << " *";
    385                                                         cout << " " << op.name << "(" << q << type << " *, ptrdiff_t);" << endl;
     366                                                        forall();
     367                                                        name_and_arg1( q );
     368                                                        cout << q << type << " *, ptrdiff_t);" << endl;
    386369                                                }
    387370                                                break;
     
    393376        cout << endl;
    394377
    395         cout << "forall(dtype DT) DT *                  ?=?(                DT *          &, zero_t );" << endl;
    396         cout << "forall(dtype DT) DT *                  ?=?(                DT * volatile &, zero_t );" << endl;
    397         cout << "forall(dtype DT) const DT *            ?=?( const          DT *          &, zero_t );" << endl;
    398         cout << "forall(dtype DT) const DT *            ?=?( const          DT * volatile &, zero_t );" << endl;
    399         cout << "forall(dtype DT) volatile DT * ?=?( volatile       DT *          &, zero_t );" << endl;
    400         cout << "forall(dtype DT) volatile DT * ?=?( volatile       DT * volatile &, zero_t );" << endl;
    401         cout << "forall(dtype DT) const volatile DT *   ?=?( const volatile DT *          &, zero_t );" << endl;
    402         cout << "forall(dtype DT) const volatile DT *   ?=?( const volatile DT * volatile &, zero_t );" << endl;
    403         cout << "forall(ftype FT) FT *                  ?=?( FT *          &, zero_t );" << endl;
    404         cout << "forall(ftype FT) FT *                  ?=?( FT * volatile &, zero_t );" << endl;
     378        for (auto is_vol : { "        ", "volatile" }) {
     379                for (auto cvq : qualifiersPair) {
     380                                cout << "forall(dtype DT) " << cvq.first << "void * ?=?( " << cvq.first << "void * " << is_vol << " &, " << cvq.second << "DT *);" << endl;
     381                }
     382                for (auto cvq : qualifiersSingle) {
     383                        cout << "forall(dtype DT) " << cvq <<   "  DT * ?=?( " << cvq << "  DT * " << is_vol << " &, zero_t);" << endl;
     384                }
     385        }
     386        cout << endl;
    405387}
    406388
  • src/tests/.expect/attributes.x86.txt

    r036dd5f raeec6b7  
     1signed int __la__Fi___1(){
     2    __attribute__ ((unused)) signed int ___retval_la__i_1;
     3    L: __attribute__ ((unused)) ((void)1);
     4}
     5struct __attribute__ ((unused)) __anonymous0 {
     6};
     7static inline void ___constructor__F_13s__anonymous0_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1);
     8static inline void ___constructor__F_13s__anonymous013s__anonymous0_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1, struct __anonymous0 ___src__13s__anonymous0_1);
     9static inline void ___destructor__F_13s__anonymous0_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1);
     10static inline struct __anonymous0 ___operator_assign__F13s__anonymous0_13s__anonymous013s__anonymous0_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1, struct __anonymous0 ___src__13s__anonymous0_1);
     11static inline void ___constructor__F_13s__anonymous0_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1){
     12}
     13static inline void ___constructor__F_13s__anonymous013s__anonymous0_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1, struct __anonymous0 ___src__13s__anonymous0_1){
     14}
     15static inline void ___destructor__F_13s__anonymous0_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1){
     16}
     17static inline struct __anonymous0 ___operator_assign__F13s__anonymous0_13s__anonymous013s__anonymous0_autogen___1(struct __anonymous0 *___dst__13s__anonymous0_1, struct __anonymous0 ___src__13s__anonymous0_1){
     18    struct __anonymous0 ___ret__13s__anonymous0_1;
     19    ((void)___constructor__F_13s__anonymous013s__anonymous0_autogen___1((&___ret__13s__anonymous0_1), (*___dst__13s__anonymous0_1)));
     20    return ___ret__13s__anonymous0_1;
     21}
     22struct __attribute__ ((unused)) Agn1;
     23struct __attribute__ ((unused)) Agn2 {
     24};
     25static inline void ___constructor__F_5sAgn2_autogen___1(struct Agn2 *___dst__5sAgn2_1);
     26static inline void ___constructor__F_5sAgn25sAgn2_autogen___1(struct Agn2 *___dst__5sAgn2_1, struct Agn2 ___src__5sAgn2_1);
     27static inline void ___destructor__F_5sAgn2_autogen___1(struct Agn2 *___dst__5sAgn2_1);
     28static inline struct Agn2 ___operator_assign__F5sAgn2_5sAgn25sAgn2_autogen___1(struct Agn2 *___dst__5sAgn2_1, struct Agn2 ___src__5sAgn2_1);
     29static inline void ___constructor__F_5sAgn2_autogen___1(struct Agn2 *___dst__5sAgn2_1){
     30}
     31static inline void ___constructor__F_5sAgn25sAgn2_autogen___1(struct Agn2 *___dst__5sAgn2_1, struct Agn2 ___src__5sAgn2_1){
     32}
     33static inline void ___destructor__F_5sAgn2_autogen___1(struct Agn2 *___dst__5sAgn2_1){
     34}
     35static inline struct Agn2 ___operator_assign__F5sAgn2_5sAgn25sAgn2_autogen___1(struct Agn2 *___dst__5sAgn2_1, struct Agn2 ___src__5sAgn2_1){
     36    struct Agn2 ___ret__5sAgn2_1;
     37    ((void)___constructor__F_5sAgn25sAgn2_autogen___1((&___ret__5sAgn2_1), (*___dst__5sAgn2_1)));
     38    return ___ret__5sAgn2_1;
     39}
     40enum __attribute__ ((unused)) __anonymous1 {
     41    __E1__C13e__anonymous1_1,
     42};
     43enum __attribute__ ((unused)) Agn3;
     44enum __attribute__ ((packed)) Agn3 {
     45    __E2__C5eAgn3_1,
     46};
     47struct __attribute__ ((unused)) __anonymous2 {
     48};
     49static inline void ___constructor__F_13s__anonymous2_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1);
     50static inline void ___constructor__F_13s__anonymous213s__anonymous2_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1, struct __anonymous2 ___src__13s__anonymous2_1);
     51static inline void ___destructor__F_13s__anonymous2_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1);
     52static inline struct __anonymous2 ___operator_assign__F13s__anonymous2_13s__anonymous213s__anonymous2_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1, struct __anonymous2 ___src__13s__anonymous2_1);
     53static inline void ___constructor__F_13s__anonymous2_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1){
     54}
     55static inline void ___constructor__F_13s__anonymous213s__anonymous2_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1, struct __anonymous2 ___src__13s__anonymous2_1){
     56}
     57static inline void ___destructor__F_13s__anonymous2_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1){
     58}
     59static inline struct __anonymous2 ___operator_assign__F13s__anonymous2_13s__anonymous213s__anonymous2_autogen___1(struct __anonymous2 *___dst__13s__anonymous2_1, struct __anonymous2 ___src__13s__anonymous2_1){
     60    struct __anonymous2 ___ret__13s__anonymous2_1;
     61    ((void)___constructor__F_13s__anonymous213s__anonymous2_autogen___1((&___ret__13s__anonymous2_1), (*___dst__13s__anonymous2_1)));
     62    return ___ret__13s__anonymous2_1;
     63}
     64struct __attribute__ ((unused)) Agn4 {
     65};
     66static inline void ___constructor__F_5sAgn4_autogen___1(struct Agn4 *___dst__5sAgn4_1);
     67static inline void ___constructor__F_5sAgn45sAgn4_autogen___1(struct Agn4 *___dst__5sAgn4_1, struct Agn4 ___src__5sAgn4_1);
     68static inline void ___destructor__F_5sAgn4_autogen___1(struct Agn4 *___dst__5sAgn4_1);
     69static inline struct Agn4 ___operator_assign__F5sAgn4_5sAgn45sAgn4_autogen___1(struct Agn4 *___dst__5sAgn4_1, struct Agn4 ___src__5sAgn4_1);
     70static inline void ___constructor__F_5sAgn4_autogen___1(struct Agn4 *___dst__5sAgn4_1){
     71}
     72static inline void ___constructor__F_5sAgn45sAgn4_autogen___1(struct Agn4 *___dst__5sAgn4_1, struct Agn4 ___src__5sAgn4_1){
     73}
     74static inline void ___destructor__F_5sAgn4_autogen___1(struct Agn4 *___dst__5sAgn4_1){
     75}
     76static inline struct Agn4 ___operator_assign__F5sAgn4_5sAgn45sAgn4_autogen___1(struct Agn4 *___dst__5sAgn4_1, struct Agn4 ___src__5sAgn4_1){
     77    struct Agn4 ___ret__5sAgn4_1;
     78    ((void)___constructor__F_5sAgn45sAgn4_autogen___1((&___ret__5sAgn4_1), (*___dst__5sAgn4_1)));
     79    return ___ret__5sAgn4_1;
     80}
     81struct Fdl {
     82    __attribute__ ((unused)) signed int __f1__i_1;
     83    __attribute__ ((unused)) signed int __f2__i_1;
     84    __attribute__ ((unused,unused)) signed int __f3__i_1;
     85    __attribute__ ((unused)) signed int __f4__i_1;
     86    __attribute__ ((unused,unused)) signed int __f5__i_1;
     87    __attribute__ ((used,packed)) signed int __f6__i_1;
     88    __attribute__ ((used,unused,unused)) signed int __f7__i_1;
     89    __attribute__ ((used,used,unused)) signed int __f8__i_1;
     90    __attribute__ ((unused)) signed int __anonymous_object0;
     91    __attribute__ ((unused,unused)) signed int *__f9__Pi_1;
     92};
     93static inline void ___constructor__F_4sFdl_autogen___1(struct Fdl *___dst__4sFdl_1);
     94static inline void ___constructor__F_4sFdl4sFdl_autogen___1(struct Fdl *___dst__4sFdl_1, struct Fdl ___src__4sFdl_1);
     95static inline void ___destructor__F_4sFdl_autogen___1(struct Fdl *___dst__4sFdl_1);
     96static inline struct Fdl ___operator_assign__F4sFdl_4sFdl4sFdl_autogen___1(struct Fdl *___dst__4sFdl_1, struct Fdl ___src__4sFdl_1);
     97static inline void ___constructor__F_4sFdli_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1);
     98static inline void ___constructor__F_4sFdlii_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1);
     99static inline void ___constructor__F_4sFdliii_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);
     100static inline void ___constructor__F_4sFdliiii_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);
     101static inline void ___constructor__F_4sFdliiiii_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);
     102static inline void ___constructor__F_4sFdliiiiii_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);
     103static 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);
     104static 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);
     105static 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);
     106static 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);
     107static inline void ___constructor__F_4sFdl_autogen___1(struct Fdl *___dst__4sFdl_1){
     108    ((void)((*___dst__4sFdl_1).__f1__i_1) /* ?{} */);
     109    ((void)((*___dst__4sFdl_1).__f2__i_1) /* ?{} */);
     110    ((void)((*___dst__4sFdl_1).__f3__i_1) /* ?{} */);
     111    ((void)((*___dst__4sFdl_1).__f4__i_1) /* ?{} */);
     112    ((void)((*___dst__4sFdl_1).__f5__i_1) /* ?{} */);
     113    ((void)((*___dst__4sFdl_1).__f6__i_1) /* ?{} */);
     114    ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */);
     115    ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */);
     116    ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ?{} */);
     117    ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */);
     118}
     119static inline void ___constructor__F_4sFdl4sFdl_autogen___1(struct Fdl *___dst__4sFdl_1, struct Fdl ___src__4sFdl_1){
     120    ((void)((*___dst__4sFdl_1).__f1__i_1=___src__4sFdl_1.__f1__i_1) /* ?{} */);
     121    ((void)((*___dst__4sFdl_1).__f2__i_1=___src__4sFdl_1.__f2__i_1) /* ?{} */);
     122    ((void)((*___dst__4sFdl_1).__f3__i_1=___src__4sFdl_1.__f3__i_1) /* ?{} */);
     123    ((void)((*___dst__4sFdl_1).__f4__i_1=___src__4sFdl_1.__f4__i_1) /* ?{} */);
     124    ((void)((*___dst__4sFdl_1).__f5__i_1=___src__4sFdl_1.__f5__i_1) /* ?{} */);
     125    ((void)((*___dst__4sFdl_1).__f6__i_1=___src__4sFdl_1.__f6__i_1) /* ?{} */);
     126    ((void)((*___dst__4sFdl_1).__f7__i_1=___src__4sFdl_1.__f7__i_1) /* ?{} */);
     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) /* ?{} */);
     129    ((void)((*___dst__4sFdl_1).__f9__Pi_1=___src__4sFdl_1.__f9__Pi_1) /* ?{} */);
     130}
     131static inline void ___destructor__F_4sFdl_autogen___1(struct Fdl *___dst__4sFdl_1){
     132    ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ^?{} */);
     133    ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ^?{} */);
     134    ((void)((*___dst__4sFdl_1).__f8__i_1) /* ^?{} */);
     135    ((void)((*___dst__4sFdl_1).__f7__i_1) /* ^?{} */);
     136    ((void)((*___dst__4sFdl_1).__f6__i_1) /* ^?{} */);
     137    ((void)((*___dst__4sFdl_1).__f5__i_1) /* ^?{} */);
     138    ((void)((*___dst__4sFdl_1).__f4__i_1) /* ^?{} */);
     139    ((void)((*___dst__4sFdl_1).__f3__i_1) /* ^?{} */);
     140    ((void)((*___dst__4sFdl_1).__f2__i_1) /* ^?{} */);
     141    ((void)((*___dst__4sFdl_1).__f1__i_1) /* ^?{} */);
     142}
     143static inline struct Fdl ___operator_assign__F4sFdl_4sFdl4sFdl_autogen___1(struct Fdl *___dst__4sFdl_1, struct Fdl ___src__4sFdl_1){
     144    struct Fdl ___ret__4sFdl_1;
     145    ((void)((*___dst__4sFdl_1).__f1__i_1=___src__4sFdl_1.__f1__i_1));
     146    ((void)((*___dst__4sFdl_1).__f2__i_1=___src__4sFdl_1.__f2__i_1));
     147    ((void)((*___dst__4sFdl_1).__f3__i_1=___src__4sFdl_1.__f3__i_1));
     148    ((void)((*___dst__4sFdl_1).__f4__i_1=___src__4sFdl_1.__f4__i_1));
     149    ((void)((*___dst__4sFdl_1).__f5__i_1=___src__4sFdl_1.__f5__i_1));
     150    ((void)((*___dst__4sFdl_1).__f6__i_1=___src__4sFdl_1.__f6__i_1));
     151    ((void)((*___dst__4sFdl_1).__f7__i_1=___src__4sFdl_1.__f7__i_1));
     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));
     154    ((void)((*___dst__4sFdl_1).__f9__Pi_1=___src__4sFdl_1.__f9__Pi_1));
     155    ((void)___constructor__F_4sFdl4sFdl_autogen___1((&___ret__4sFdl_1), (*___dst__4sFdl_1)));
     156    return ___ret__4sFdl_1;
     157}
     158static inline void ___constructor__F_4sFdli_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1){
     159    ((void)((*___dst__4sFdl_1).__f1__i_1=__f1__i_1) /* ?{} */);
     160    ((void)((*___dst__4sFdl_1).__f2__i_1) /* ?{} */);
     161    ((void)((*___dst__4sFdl_1).__f3__i_1) /* ?{} */);
     162    ((void)((*___dst__4sFdl_1).__f4__i_1) /* ?{} */);
     163    ((void)((*___dst__4sFdl_1).__f5__i_1) /* ?{} */);
     164    ((void)((*___dst__4sFdl_1).__f6__i_1) /* ?{} */);
     165    ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */);
     166    ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */);
     167    ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ?{} */);
     168    ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */);
     169}
     170static inline void ___constructor__F_4sFdlii_autogen___1(struct Fdl *___dst__4sFdl_1, __attribute__ ((unused)) signed int __f1__i_1, __attribute__ ((unused)) signed int __f2__i_1){
     171    ((void)((*___dst__4sFdl_1).__f1__i_1=__f1__i_1) /* ?{} */);
     172    ((void)((*___dst__4sFdl_1).__f2__i_1=__f2__i_1) /* ?{} */);
     173    ((void)((*___dst__4sFdl_1).__f3__i_1) /* ?{} */);
     174    ((void)((*___dst__4sFdl_1).__f4__i_1) /* ?{} */);
     175    ((void)((*___dst__4sFdl_1).__f5__i_1) /* ?{} */);
     176    ((void)((*___dst__4sFdl_1).__f6__i_1) /* ?{} */);
     177    ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */);
     178    ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */);
     179    ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ?{} */);
     180    ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */);
     181}
     182static inline void ___constructor__F_4sFdliii_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){
     183    ((void)((*___dst__4sFdl_1).__f1__i_1=__f1__i_1) /* ?{} */);
     184    ((void)((*___dst__4sFdl_1).__f2__i_1=__f2__i_1) /* ?{} */);
     185    ((void)((*___dst__4sFdl_1).__f3__i_1=__f3__i_1) /* ?{} */);
     186    ((void)((*___dst__4sFdl_1).__f4__i_1) /* ?{} */);
     187    ((void)((*___dst__4sFdl_1).__f5__i_1) /* ?{} */);
     188    ((void)((*___dst__4sFdl_1).__f6__i_1) /* ?{} */);
     189    ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */);
     190    ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */);
     191    ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ?{} */);
     192    ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */);
     193}
     194static inline void ___constructor__F_4sFdliiii_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){
     195    ((void)((*___dst__4sFdl_1).__f1__i_1=__f1__i_1) /* ?{} */);
     196    ((void)((*___dst__4sFdl_1).__f2__i_1=__f2__i_1) /* ?{} */);
     197    ((void)((*___dst__4sFdl_1).__f3__i_1=__f3__i_1) /* ?{} */);
     198    ((void)((*___dst__4sFdl_1).__f4__i_1=__f4__i_1) /* ?{} */);
     199    ((void)((*___dst__4sFdl_1).__f5__i_1) /* ?{} */);
     200    ((void)((*___dst__4sFdl_1).__f6__i_1) /* ?{} */);
     201    ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */);
     202    ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */);
     203    ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ?{} */);
     204    ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */);
     205}
     206static inline void ___constructor__F_4sFdliiiii_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){
     207    ((void)((*___dst__4sFdl_1).__f1__i_1=__f1__i_1) /* ?{} */);
     208    ((void)((*___dst__4sFdl_1).__f2__i_1=__f2__i_1) /* ?{} */);
     209    ((void)((*___dst__4sFdl_1).__f3__i_1=__f3__i_1) /* ?{} */);
     210    ((void)((*___dst__4sFdl_1).__f4__i_1=__f4__i_1) /* ?{} */);
     211    ((void)((*___dst__4sFdl_1).__f5__i_1=__f5__i_1) /* ?{} */);
     212    ((void)((*___dst__4sFdl_1).__f6__i_1) /* ?{} */);
     213    ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */);
     214    ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */);
     215    ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ?{} */);
     216    ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */);
     217}
     218static inline void ___constructor__F_4sFdliiiiii_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){
     219    ((void)((*___dst__4sFdl_1).__f1__i_1=__f1__i_1) /* ?{} */);
     220    ((void)((*___dst__4sFdl_1).__f2__i_1=__f2__i_1) /* ?{} */);
     221    ((void)((*___dst__4sFdl_1).__f3__i_1=__f3__i_1) /* ?{} */);
     222    ((void)((*___dst__4sFdl_1).__f4__i_1=__f4__i_1) /* ?{} */);
     223    ((void)((*___dst__4sFdl_1).__f5__i_1=__f5__i_1) /* ?{} */);
     224    ((void)((*___dst__4sFdl_1).__f6__i_1=__f6__i_1) /* ?{} */);
     225    ((void)((*___dst__4sFdl_1).__f7__i_1) /* ?{} */);
     226    ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */);
     227    ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ?{} */);
     228    ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */);
     229}
     230static 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){
     231    ((void)((*___dst__4sFdl_1).__f1__i_1=__f1__i_1) /* ?{} */);
     232    ((void)((*___dst__4sFdl_1).__f2__i_1=__f2__i_1) /* ?{} */);
     233    ((void)((*___dst__4sFdl_1).__f3__i_1=__f3__i_1) /* ?{} */);
     234    ((void)((*___dst__4sFdl_1).__f4__i_1=__f4__i_1) /* ?{} */);
     235    ((void)((*___dst__4sFdl_1).__f5__i_1=__f5__i_1) /* ?{} */);
     236    ((void)((*___dst__4sFdl_1).__f6__i_1=__f6__i_1) /* ?{} */);
     237    ((void)((*___dst__4sFdl_1).__f7__i_1=__f7__i_1) /* ?{} */);
     238    ((void)((*___dst__4sFdl_1).__f8__i_1) /* ?{} */);
     239    ((void)((*___dst__4sFdl_1).__anonymous_object0) /* ?{} */);
     240    ((void)((*___dst__4sFdl_1).__f9__Pi_1) /* ?{} */);
     241}
     242static 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){
     243    ((void)((*___dst__4sFdl_1).__f1__i_1=__f1__i_1) /* ?{} */);
     244    ((void)((*___dst__4sFdl_1).__f2__i_1=__f2__i_1) /* ?{} */);
     245    ((void)((*___dst__4sFdl_1).__f3__i_1=__f3__i_1) /* ?{} */);
     246    ((void)((*___dst__4sFdl_1).__f4__i_1=__f4__i_1) /* ?{} */);
     247    ((void)((*___dst__4sFdl_1).__f5__i_1=__f5__i_1) /* ?{} */);
     248    ((void)((*___dst__4sFdl_1).__f6__i_1=__f6__i_1) /* ?{} */);
     249    ((void)((*___dst__4sFdl_1).__f7__i_1=__f7__i_1) /* ?{} */);
     250    ((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}
     254static 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){
     255    ((void)((*___dst__4sFdl_1).__f1__i_1=__f1__i_1) /* ?{} */);
     256    ((void)((*___dst__4sFdl_1).__f2__i_1=__f2__i_1) /* ?{} */);
     257    ((void)((*___dst__4sFdl_1).__f3__i_1=__f3__i_1) /* ?{} */);
     258    ((void)((*___dst__4sFdl_1).__f4__i_1=__f4__i_1) /* ?{} */);
     259    ((void)((*___dst__4sFdl_1).__f5__i_1=__f5__i_1) /* ?{} */);
     260    ((void)((*___dst__4sFdl_1).__f6__i_1=__f6__i_1) /* ?{} */);
     261    ((void)((*___dst__4sFdl_1).__f7__i_1=__f7__i_1) /* ?{} */);
     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}
     266static 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    ((void)((*___dst__4sFdl_1).__f9__Pi_1=__f9__Pi_1) /* ?{} */);
     277}
     278__attribute__ ((unused)) signed int __f__Fi___1() asm ( "xyz" );
     279__attribute__ ((used,used)) const signed int __vd1__Ci_1;
     280__attribute__ ((used,unused)) const signed int __vd2__Ci_1;
     281__attribute__ ((used,used,used,used)) const signed int *__vd3__PCi_1;
     282__attribute__ ((used,used,unused,used,unused)) const signed int *__vd4__PCi_1;
     283__attribute__ ((used,used,used)) const signed int __vd5__A0Ci_1[((unsigned int )5)];
     284__attribute__ ((used,used,unused,used)) const signed int __vd6__A0Ci_1[((unsigned int )5)];
     285__attribute__ ((used,used,used,used)) const signed int (*__vd7__Fi___1)();
     286__attribute__ ((used,used,unused,used,used)) const signed int (*__vd8__Fi___1)();
     287__attribute__ ((unused,used)) signed int __f1__Fi___1();
     288__attribute__ ((unused)) signed int __f1__Fi___1(){
     289    __attribute__ ((unused)) signed int ___retval_f1__i_1;
     290}
     291__attribute__ ((unused,unused,unused,used)) signed int **const __f2__FPPi___1();
     292__attribute__ ((unused,unused,unused)) signed int **const __f2__FPPi___1(){
     293    __attribute__ ((unused)) signed int **const ___retval_f2__CPPi_1;
     294}
     295__attribute__ ((unused,used,unused)) signed int (*__f3__FPA0i_i__1(signed int __anonymous_object5))[];
     296__attribute__ ((unused,unused)) signed int (*__f3__FPA0i_i__1(signed int __p__i_1))[]{
     297    __attribute__ ((unused)) signed int (*___retval_f3__PA0i_1)[];
     298}
     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);
     302}
     303signed int __vtr__Fi___1(){
     304    __attribute__ ((unused)) signed int ___retval_vtr__i_1;
     305    __attribute__ ((unused,unused,used)) signed int __t1__i_2;
     306    __attribute__ ((unused,unused,unused,unused,unused)) signed int **__t2__PPi_2;
     307    __attribute__ ((unused,unused,unused)) signed int __t3__A0i_2[((unsigned int )5)];
     308    __attribute__ ((unused,unused,unused,unused,unused)) signed int **__t4__A0PPi_2[((unsigned int )5)];
     309    __attribute__ ((unused,unused,unused)) signed int __t5__Fi___2();
     310    __attribute__ ((unused,unused,unused,unused)) signed int *__t6__FPi___2();
     311}
     312signed int __ipd1__Fi_ii__1(__attribute__ ((unused,unused,unused)) signed int __p__i_1, __attribute__ ((unused,unused,unused)) signed int __q__i_1);
     313signed int __ipd1__Fi_ii__1(__attribute__ ((unused,unused,unused)) signed int __p__i_1, __attribute__ ((unused,unused,unused)) signed int __q__i_1){
     314    __attribute__ ((unused)) signed int ___retval_ipd1__i_1;
     315}
     316signed int __ipd2__Fi_PiPi__1(__attribute__ ((unused,unused,unused,unused)) signed int *__p__Pi_1, __attribute__ ((unused,unused,unused)) signed int *__q__Pi_1);
     317signed int __ipd2__Fi_PiPi__1(__attribute__ ((unused,unused,unused,unused)) signed int *__p__Pi_1, __attribute__ ((unused,unused,unused)) signed int *__q__Pi_1){
     318    __attribute__ ((unused)) signed int ___retval_ipd2__i_1;
     319}
     320signed int __ipd3__Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *__p__Pi_1, __attribute__ ((unused,unused,unused)) signed int *__q__Pi_1);
     321signed int __ipd3__Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *__p__Pi_1, __attribute__ ((unused,unused,unused)) signed int *__q__Pi_1){
     322    __attribute__ ((unused)) signed int ___retval_ipd3__i_1;
     323}
     324signed int __ipd4__Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__p__Fi___1)(), __attribute__ ((unused,unused,unused)) signed int (*__q__Fi___1)());
     325signed int __ipd4__Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__p__Fi___1)(), __attribute__ ((unused,unused,unused)) signed int (*__q__Fi___1)()){
     326    __attribute__ ((unused)) signed int ___retval_ipd4__i_1;
     327}
     328signed int __tpr1__Fi_i__1(__attribute__ ((unused,unused,unused)) signed int __Foo__i_1);
     329signed int __tpr2__Fi_PPi__1(__attribute__ ((unused,unused,unused,unused,unused,unused)) signed int **__Foo__PPi_1);
     330signed int __tpr3__Fi_Pi__1(__attribute__ ((unused,unused,unused)) signed int *__Foo__Pi_1);
     331signed int __tpr4__Fi_Fi_Pi___1(__attribute__ ((unused,unused)) signed int (*__anonymous_object9)(__attribute__ ((unused,unused)) signed int __anonymous_object10[((unsigned int )5)]));
     332signed int __tpr5__Fi_Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__Foo__Fi___1)());
     333signed int __tpr6__Fi_Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__Foo__Fi___1)());
     334signed 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)));
     335signed int __ad__Fi___1(){
     336    __attribute__ ((unused)) signed int ___retval_ad__i_1;
     337    __attribute__ ((used,unused)) signed int __ad1__i_2;
     338    __attribute__ ((unused,unused,unused)) signed int *__ad2__Pi_2;
     339    __attribute__ ((unused,unused,unused)) signed int __ad3__A0i_2[((unsigned int )5)];
     340    __attribute__ ((unused,unused,unused,unused,unused)) signed int (*__ad4__PA0i_2)[((unsigned int )10)];
     341    __attribute__ ((unused,unused,unused,unused,used)) signed int __ad5__i_2;
     342    __attribute__ ((unused,unused,unused,unused,unused)) signed int __ad6__Fi___2();
     343    ((void)sizeof(__attribute__ ((unused,unused)) signed int ));
     344    ((void)sizeof(__attribute__ ((unused,unused,unused,unused)) signed int **));
     345    ((void)sizeof(__attribute__ ((unused,unused,unused)) signed int [5]));
     346    ((void)sizeof(__attribute__ ((unused,unused,unused)) signed int (*)[10]));
     347    ((void)sizeof(__attribute__ ((unused,unused,unused)) signed int ()));
     348    struct __attribute__ ((unused)) __anonymous3 {
     349        signed int __i__i_2;
     350    };
     351    inline void ___constructor__F_13s__anonymous3_autogen___2(struct __anonymous3 *___dst__13s__anonymous3_2){
     352        ((void)((*___dst__13s__anonymous3_2).__i__i_2) /* ?{} */);
     353    }
     354    inline void ___constructor__F_13s__anonymous313s__anonymous3_autogen___2(struct __anonymous3 *___dst__13s__anonymous3_2, struct __anonymous3 ___src__13s__anonymous3_2){
     355        ((void)((*___dst__13s__anonymous3_2).__i__i_2=___src__13s__anonymous3_2.__i__i_2) /* ?{} */);
     356    }
     357    inline void ___destructor__F_13s__anonymous3_autogen___2(struct __anonymous3 *___dst__13s__anonymous3_2){
     358        ((void)((*___dst__13s__anonymous3_2).__i__i_2) /* ^?{} */);
     359    }
     360    inline struct __anonymous3 ___operator_assign__F13s__anonymous3_13s__anonymous313s__anonymous3_autogen___2(struct __anonymous3 *___dst__13s__anonymous3_2, struct __anonymous3 ___src__13s__anonymous3_2){
     361        struct __anonymous3 ___ret__13s__anonymous3_2;
     362        ((void)((*___dst__13s__anonymous3_2).__i__i_2=___src__13s__anonymous3_2.__i__i_2));
     363        ((void)___constructor__F_13s__anonymous313s__anonymous3_autogen___2((&___ret__13s__anonymous3_2), (*___dst__13s__anonymous3_2)));
     364        return ___ret__13s__anonymous3_2;
     365    }
     366    inline void ___constructor__F_13s__anonymous3i_autogen___2(struct __anonymous3 *___dst__13s__anonymous3_2, signed int __i__i_2){
     367        ((void)((*___dst__13s__anonymous3_2).__i__i_2=__i__i_2) /* ?{} */);
     368    }
     369    ((void)sizeof(struct __anonymous3 ));
     370    enum __attribute__ ((unused)) __anonymous4 {
     371        __R__C13e__anonymous4_2,
     372    };
     373    inline void ___constructor__F_13e__anonymous4_intrinsic___2(__attribute__ ((unused)) enum __anonymous4 *___dst__13e__anonymous4_2){
     374    }
     375    inline void ___constructor__F_13e__anonymous413e__anonymous4_intrinsic___2(enum __anonymous4 *___dst__13e__anonymous4_2, enum __anonymous4 ___src__13e__anonymous4_2){
     376        ((void)((*___dst__13e__anonymous4_2)=___src__13e__anonymous4_2) /* ?{} */);
     377    }
     378    inline void ___destructor__F_13e__anonymous4_intrinsic___2(__attribute__ ((unused)) enum __anonymous4 *___dst__13e__anonymous4_2){
     379    }
     380    inline enum __anonymous4 ___operator_assign__F13e__anonymous4_13e__anonymous413e__anonymous4_intrinsic___2(enum __anonymous4 *___dst__13e__anonymous4_2, enum __anonymous4 ___src__13e__anonymous4_2){
     381        enum __anonymous4 ___ret__13e__anonymous4_2;
     382        ((void)((*___dst__13e__anonymous4_2)=___src__13e__anonymous4_2));
     383        ((void)(___ret__13e__anonymous4_2=(*___dst__13e__anonymous4_2)) /* ?{} */);
     384        return ___ret__13e__anonymous4_2;
     385    }
     386    ((void)sizeof(enum __anonymous4 ));
     387}
     388signed int __apd1__Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *__anonymous_object14, __attribute__ ((unused,unused,unused)) signed int *__anonymous_object15);
     389signed int __apd2__Fi_PPiPPi__1(__attribute__ ((unused,unused,unused,unused)) signed int **__anonymous_object16, __attribute__ ((unused,unused,unused,unused)) signed int **__anonymous_object17);
     390signed int __apd3__Fi_PiPi__1(__attribute__ ((unused,unused,unused)) signed int *__anonymous_object18, __attribute__ ((unused,unused,unused)) signed int *__anonymous_object19);
     391signed int __apd4__Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object20)(), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object21)());
     392signed 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));
     393signed int __apd6__Fi_Fi__Fi____1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object26)(), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object27)());
     394signed 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));
     395struct 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)();
     400};
     401static inline void ___constructor__F_4sVad_autogen___1(struct Vad *___dst__4sVad_1);
     402static inline void ___constructor__F_4sVad4sVad_autogen___1(struct Vad *___dst__4sVad_1, struct Vad ___src__4sVad_1);
     403static inline void ___destructor__F_4sVad_autogen___1(struct Vad *___dst__4sVad_1);
     404static inline struct Vad ___operator_assign__F4sVad_4sVad4sVad_autogen___1(struct Vad *___dst__4sVad_1, struct Vad ___src__4sVad_1);
     405static inline void ___constructor__F_4sVadi_autogen___1(struct Vad *___dst__4sVad_1, __attribute__ ((unused)) signed int __anonymous_object36);
     406static 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);
     407static 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)]);
     408static 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)());
     409static 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}
     422static 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}
     435static 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}
     448static inline struct Vad ___operator_assign__F4sVad_4sVad4sVad_autogen___1(struct Vad *___dst__4sVad_1, struct Vad ___src__4sVad_1){
     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));
     461    ((void)___constructor__F_4sVad4sVad_autogen___1((&___ret__4sVad_1), (*___dst__4sVad_1)));
     462    return ___ret__4sVad_1;
     463}
     464static 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}
     477static 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}
     490static 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}
     503static 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/Makefile.am

    r036dd5f raeec6b7  
    1717debug=yes
    1818
    19 quick_test=avl_test operators numericConstants expression enum array typeof cast dtor-early-exit init_once attributes
     19quick_test=avl_test operators numericConstants expression enum array typeof cast attributes
    2020
    2121if BUILD_CONCURRENCY
  • src/tests/attributes.c

    r036dd5f raeec6b7  
    1010// Created On       : Mon Feb  6 16:07:02 2017
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Jul 21 23:05:52 2017
    13 // Update Count     : 3
     12// Last Modified On : Sun Jul  8 21:12:07 2018
     13// Update Count     : 8
    1414//
    1515
     
    2929enum __attribute__(( packed )) Agn3 { E2 };
    3030#ifdef __CFA__
    31 struct __attribute__(( unused )) ( int ) {};
    32 struct __attribute__(( unused )) ( int ) {};
     31struct __attribute__(( unused )) {} ( int );
     32struct __attribute__(( unused )) Agn4 {} ( int );
    3333#endif // __CFA__
    3434
Note: See TracChangeset for help on using the changeset viewer.