Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/SymTab/Mangler.cc

    rd1e0979 re73becf  
    117117                                        mangleName << declaration->get_name();
    118118                                } // if
    119                                 mangleName << nameSeparator;
     119                                mangleName << "__";
    120120                                maybeAccept( declaration->get_type(), *visitor );
    121121                                if ( mangleOverridable && LinkageSpec::isOverridable( declaration->get_linkage() ) ) {
     
    148148
    149149                        void Mangler::postvisit( BasicType * basicType ) {
     150                                static const char *btLetter[] = {
     151                                        "b",    // Bool
     152                                        "c",    // Char
     153                                        "Sc",   // SignedChar
     154                                        "Uc",   // UnsignedChar
     155                                        "s",    // ShortSignedInt
     156                                        "Us",   // ShortUnsignedInt
     157                                        "i",    // SignedInt
     158                                        "Ui",   // UnsignedInt
     159                                        "l",    // LongSignedInt
     160                                        "Ul",   // LongUnsignedInt
     161                                        "q",    // LongLongSignedInt
     162                                        "Uq",   // LongLongUnsignedInt
     163                                        "f",    // Float
     164                                        "d",    // Double
     165                                        "r",    // LongDouble
     166                                        "Xf",   // FloatComplex
     167                                        "Xd",   // DoubleComplex
     168                                        "Xr",   // LongDoubleComplex
     169                                        "If",   // FloatImaginary
     170                                        "Id",   // DoubleImaginary
     171                                        "Ir",   // LongDoubleImaginary
     172                                        "w",    // SignedInt128
     173                                        "Uw",   // UnsignedInt128
     174                                        "x",    // Float80
     175                                        "y",    // Float128
     176                                };
     177                                static_assert(
     178                                        sizeof(btLetter)/sizeof(btLetter[0]) == BasicType::NUMBER_OF_BASIC_TYPES,
     179                                        "Each basic type kind should have a corresponding mangler letter"
     180                                );
     181
    150182                                printQualifiers( basicType );
    151                                 assert( basicType->get_kind() < numBtLetter );
     183                                assert( basicType->get_kind() < sizeof(btLetter)/sizeof(btLetter[0]) );
    152184                                mangleName << btLetter[ basicType->get_kind() ];
    153185                        }
     
    195227                                inFunctionType = true;
    196228                                std::list< Type* > returnTypes = getTypes( functionType->returnVals );
    197                                 if (returnTypes.empty()) mangleName << "v";
    198                                 else acceptAll( returnTypes, *visitor );
     229                                acceptAll( returnTypes, *visitor );
    199230                                mangleName << "_";
    200231                                std::list< Type* > paramTypes = getTypes( functionType->parameters );
Note: See TracChangeset for help on using the changeset viewer.