Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/SymTab/Mangler.cc

    r89e6ffc r8bf784a  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // Mangler.cc -- 
     7// Mangler.cc --
    88//
    99// Author           : Richard C. Bilson
     
    3535                return mangler.get_mangleName();
    3636        }
    37        
     37
    3838        Mangler::Mangler( bool mangleOverridable, bool typeMode )
    3939                : nextVarNum( 0 ), isTopLevel( true ), mangleOverridable( mangleOverridable ), typeMode( typeMode ) {}
    40                
     40
    4141        Mangler::Mangler( const Mangler &rhs ) : mangleName() {
    4242                varNums = rhs.varNums;
     
    115115                        "Ir",   // LongDoubleImaginary
    116116                };
    117  
     117
    118118                printQualifiers( basicType );
    119119                mangleName << btLetter[ basicType->get_kind() ];
     
    214214                                mangleName << "f";
    215215                                break;
     216                                case TypeDecl::Ttype:
     217                                mangleName << "tVARGS";
     218                                break;
     219                                default:
     220                                assert( false );
    216221                        } // switch
    217222                        mangleName << numStream.str();
     
    253258                // skip if not including qualifiers
    254259                if ( typeMode ) return;
    255                
     260
    256261                if ( ! type->get_forall().empty() ) {
    257262                        std::list< std::string > assertionNames;
    258                         int tcount = 0, dcount = 0, fcount = 0;
     263                        int tcount = 0, dcount = 0, fcount = 0, vcount = 0;
    259264                        mangleName << "A";
    260                         for ( std::list< TypeDecl* >::iterator i = type->get_forall().begin(); i != type->get_forall().end(); ++i ) {
     265                        for ( Type::ForallList::iterator i = type->get_forall().begin(); i != type->get_forall().end(); ++i ) {
    261266                                switch ( (*i)->get_kind() ) {
    262267                                  case TypeDecl::Any:
     
    269274                                        fcount++;
    270275                                        break;
     276                                  case TypeDecl::Ttype:
     277                                        vcount++;
     278                                        break;
     279                                  default:
     280                                        assert( false );
    271281                                } // switch
    272282                                varNums[ (*i )->get_name() ] = std::pair< int, int >( nextVarNum++, (int )(*i )->get_kind() );
     
    280290                                } // for
    281291                        } // for
    282                         mangleName << tcount << "_" << dcount << "_" << fcount << "_";
     292                        mangleName << tcount << "_" << dcount << "_" << fcount << "_" << vcount << "_";
    283293                        std::copy( assertionNames.begin(), assertionNames.end(), std::ostream_iterator< std::string >( mangleName, "" ) );
    284294                        mangleName << "_";
Note: See TracChangeset for help on using the changeset viewer.