Ignore:
Timestamp:
Aug 2, 2018, 11:09:03 AM (6 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:
4285544e
Parents:
3bbd012
Message:

Modify name mangling scheme to more closely resembly itanium C++ name mangling

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/SymTab/Mangler.h

    r3bbd012 r642bc83  
    2424#include "SynTree/Visitor.h"  // for Visitor, maybeAccept
    2525
     26// https://itanium-cxx-abi.github.io/cxx-abi/abi.html#mangling
     27// The CFA name mangling scheme is based closely on the itanium C++ name mangling scheme, with the following key differences:
     28// * Variable names are also mangled to include type information, not just functions
     29// * CFA does not have template expansion, so the rules for function specialization do not apply.
     30// * CFA instead has to handle type parameters and assertion parameters.
     31// * Currently name compression is not implemented.
     32
    2633namespace SymTab {
    2734        namespace Mangler {
     
    3441                std::string mangleConcrete( Type* ty );
    3542
    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;
     43                namespace Encoding {
     44                        extern const std::string manglePrefix;
     45                        extern const std::string basicTypes[];
     46                        extern const std::map<int, std::string> qualifiers;
     47
     48                        extern const std::string voidType;
     49                        extern const std::string zero;
     50                        extern const std::string one;
     51
     52                        extern const std::string function;
     53                        extern const std::string tuple;
     54                        extern const std::string pointer;
     55                        extern const std::string array;
     56                        extern const std::string qualifiedTypeStart;
     57                        extern const std::string qualifiedTypeEnd;
     58
     59                        extern const std::string autogen;
     60                        extern const std::string intrinsic;
     61                };
    4062        } // Mangler
    4163} // SymTab
Note: See TracChangeset for help on using the changeset viewer.