Ignore:
Timestamp:
Mar 12, 2019, 3:00:54 PM (7 years ago)
Author:
Aaron Moss <a3moss@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, pthread-emulation, qualifiedEnum
Children:
30e32b2, a2545593
Parents:
9d9a451 (diff), 91d6584 (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 second draft of Aaron's thesis

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/SymTab/ManglerCommon.cc

    r9d9a451 r53bb8f1  
    1010// Created On       : Sun May 17 21:44:03 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jul 22 09:45:30 2017
    13 // Update Count     : 15
     12// Last Modified On : Thu Feb 14 17:06:37 2019
     13// Update Count     : 26
    1414//
    1515
     
    2323                        const std::string manglePrefix = "_X";
    2424
    25                         const std::string basicTypes[] = {
    26                                 "b",  // Bool
    27                                 "c",  // Char
    28                                 "a",  // SignedChar
    29                                 "h",  // UnsignedChar
    30                                 "s",  // ShortSignedInt
    31                                 "t",  // ShortUnsignedInt
    32                                 "i",  // SignedInt
    33                                 "j",  // UnsignedInt
    34                                 "l",  // LongSignedInt
    35                                 "m",  // LongUnsignedInt
    36                                 "x",  // LongLongSignedInt
    37                                 "y",  // LongLongUnsignedInt
    38                                 "f",  // Float
    39                                 "d",  // Double
    40                                 "e",  // LongDouble
    41                                 "Cf", // FloatComplex
    42                                 "Cd", // DoubleComplex
    43                                 "Ce", // LongDoubleComplex
    44                                 // Note: imaginary is not an overloadable type in C++
    45                                 "If", // FloatImaginary
    46                                 "Id", // DoubleImaginary
    47                                 "Ie", // LongDoubleImaginary
    48                                 "n",  // SignedInt128
    49                                 "o",  // UnsignedInt128
    50                                 "Dq",  // Float80 -- TODO: itanium says Float80 and LongDouble both encode to "e", but doing this causes problems with constructing long double, because the cost tables are incorrect
    51                                 "g",  // Float128
    52                                 // "z", // ellipsis
    53                                 // "Dd" // # IEEE 754r decimal floating point (64 bits)
    54                                 // "De" // # IEEE 754r decimal floating point (128 bits)
    55                                 // "Df" // # IEEE 754r decimal floating point (32 bits)
    56                                 // "Dh" // # IEEE 754r half-precision floating point (16 bits)
    57                                 // "DF"N_ // # ISO/IEC TS 18661 binary floating point type _FloatN (N bits)
    58                                 // "Di" // char32_t
    59                                 // "Ds" // char16_t
    60                         };
     25                        // GENERATED START, DO NOT EDIT
     26                        // GENERATED BY BasicTypes-gen.cc
     27                        // NOTES ON MANGLING:
     28                        // * Itanium spec says that Float80 encodes to "e" (like LongDouble), but the distinct lengths cause resolution problems.
     29                        // * Float128 is supposed to encode to "g", but I wanted it to mangle equal to LongDouble.
     30                        // * Mangling for non-standard complex types is by best guess
     31                        // * _FloatN is supposed to encode as "DF"N"_"; modified for same reason as above.
     32                        // * unused mangling identifiers:
     33                        //   - "z" ellipsis
     34                        //   - "Dd" IEEE 754r 64-bit decimal floating point (borrowed for _Float32x)
     35                        //   - "De" IEEE 754r 128-bit decimal floating point
     36                        //   - "Df" IEEE 754r 32-bit decimal floating point
     37                        //   - "Dh" IEEE 754r 16-bit decimal floating point (borrowed for _Float16)
     38                        //   - "DF"N"_" ISO/IEC TS 18661 N-bit binary floating point (_FloatN)
     39                        //   - "Di" char32_t
     40                        //   - "Ds" char16_t
     41                        const std::string basicTypes[BasicType::NUMBER_OF_BASIC_TYPES] = {
     42                                "b",        // _Bool
     43                                "c",        // char
     44                                "a",        // signed char
     45                                "h",        // unsigned char
     46                                "s",        // signed short int
     47                                "t",        // unsigned short int
     48                                "i",        // signed int
     49                                "j",        // unsigned int
     50                                "l",        // signed long int
     51                                "m",        // unsigned long int
     52                                "x",        // signed long long int
     53                                "y",        // unsigned long long int
     54                                "n",        // __int128
     55                                "o",        // unsigned __int128
     56                                "DF16_",    // _Float16
     57                                "CDF16_",   // _Float16 _Complex
     58                                "DF32_",    // _Float32
     59                                "CDF32_",   // _Float32 _Complex
     60                                "f",        // float
     61                                "Cf",       // float _Complex
     62                                "DF32x_",   // _Float32x
     63                                "CDF32x_",  // _Float32x _Complex
     64                                "DF64_",    // _Float64
     65                                "CDF64_",   // _Float64 _Complex
     66                                "d",        // double
     67                                "Cd",       // double _Complex
     68                                "DF64x_",   // _Float64x
     69                                "CDF64x_",  // _Float64x _Complex
     70                                "Dq",       // __float80
     71                                "DF128_",   // _Float128
     72                                "CDF128_",  // _Float128 _Complex
     73                                "g",        // __float128
     74                                "e",        // long double
     75                                "Ce",       // long double _Complex
     76                                "DF128x_",  // _Float128x
     77                                "CDF128x_", // _Float128x _Complex
     78                        }; // basicTypes
     79                        // GENERATED END
    6180                        static_assert(
    6281                                sizeof(basicTypes)/sizeof(basicTypes[0]) == BasicType::NUMBER_OF_BASIC_TYPES,
Note: See TracChangeset for help on using the changeset viewer.