Changeset d1e0979 for src/SymTab
- Timestamp:
- Jul 24, 2018, 10:45:59 AM (6 years ago)
- 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:
- 3bbd012
- Parents:
- 16a7d84
- Location:
- src/SymTab
- Files:
-
- 3 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
src/SymTab/Mangler.cc
r16a7d84 rd1e0979 117 117 mangleName << declaration->get_name(); 118 118 } // if 119 mangleName << "__";119 mangleName << nameSeparator; 120 120 maybeAccept( declaration->get_type(), *visitor ); 121 121 if ( mangleOverridable && LinkageSpec::isOverridable( declaration->get_linkage() ) ) { … … 148 148 149 149 void Mangler::postvisit( BasicType * basicType ) { 150 static const char *btLetter[] = {151 "b", // Bool152 "c", // Char153 "Sc", // SignedChar154 "Uc", // UnsignedChar155 "s", // ShortSignedInt156 "Us", // ShortUnsignedInt157 "i", // SignedInt158 "Ui", // UnsignedInt159 "l", // LongSignedInt160 "Ul", // LongUnsignedInt161 "q", // LongLongSignedInt162 "Uq", // LongLongUnsignedInt163 "f", // Float164 "d", // Double165 "r", // LongDouble166 "Xf", // FloatComplex167 "Xd", // DoubleComplex168 "Xr", // LongDoubleComplex169 "If", // FloatImaginary170 "Id", // DoubleImaginary171 "Ir", // LongDoubleImaginary172 "w", // SignedInt128173 "Uw", // UnsignedInt128174 "x", // Float80175 "y", // Float128176 };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 182 150 printQualifiers( basicType ); 183 assert( basicType->get_kind() < sizeof(btLetter)/sizeof(btLetter[0]));151 assert( basicType->get_kind() < numBtLetter ); 184 152 mangleName << btLetter[ basicType->get_kind() ]; 185 153 } … … 227 195 inFunctionType = true; 228 196 std::list< Type* > returnTypes = getTypes( functionType->returnVals ); 229 acceptAll( returnTypes, *visitor ); 197 if (returnTypes.empty()) mangleName << "v"; 198 else acceptAll( returnTypes, *visitor ); 230 199 mangleName << "_"; 231 200 std::list< Type* > paramTypes = getTypes( functionType->parameters ); -
src/SymTab/Mangler.h
r16a7d84 rd1e0979 33 33 /// Mangle ignoring generic type parameters 34 34 std::string mangleConcrete( Type* ty ); 35 36 extern const char *btLetter[]; 37 extern const int numBtLetter; 38 extern const std::map<int, const char *> qualifierLetter; 39 extern const std::string nameSeparator; 35 40 } // Mangler 36 41 } // SymTab 42 43 extern "C" { 44 std::string cforall_demangle(const std::string &); 45 } 37 46 38 47 // Local Variables: // -
src/SymTab/module.mk
r16a7d84 rd1e0979 17 17 SRC += SymTab/Indexer.cc \ 18 18 SymTab/Mangler.cc \ 19 SymTab/ManglerCommon.cc \ 19 20 SymTab/Validate.cc \ 20 21 SymTab/FixFunction.cc \
Note: See TracChangeset
for help on using the changeset viewer.