summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Demangle/ItaniumDemangle.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Demangle: use named values for CV qualifiersSaleem Abdulrasool2017-01-241-12/+18
| | | | | | | Rather than hard-coding magic values of 1, 2, 4 (bit-field), use an enum to name the values. NFC. llvm-svn: 292975
* Demangle: avoid butchering parameter typeSaleem Abdulrasool2017-01-241-2/+2
| | | | | | | | | | When demangling a CV-qualified function type with a final parameter with a reference type, we would insert the CV qualification on the parameter rather than the function, and in the process adjust the insertion point by one extra, splitting the type name. This avoids doing so, even though the attribution is still incorrect. llvm-svn: 292965
* Revert "Demangle: only demangle mangled symbols"Saleem Abdulrasool2017-01-201-10/+1
| | | | | | | | This reverts SVN r286795. This was incorrect the demangler is expected to be able to demangle types as well as functions. This makes the behaviour of itaniumDemangle similar to __cxa_demangle once more. llvm-svn: 292573
* Demangle: remove references to allocator for default allocatorSaleem Abdulrasool2016-11-201-50/+29
| | | | | | | | | The demangler had stopped using a custom allocator but had not been updated to remove the use of the explicit allocator passing. This removes that as we do not need to do anything special here anymore. This just makes the code more compact. NFC. llvm-svn: 287472
* Demangle: remove unnecessary typedef for std::vectorSaleem Abdulrasool2016-11-201-5/+3
| | | | | | | We could create a local typedef for std::vector called Vector. Inline the use of std::vector rather than use the typedef. NFC. llvm-svn: 287471
* Demangle: replace custom typedef for std::string with std::stringSaleem Abdulrasool2016-11-201-41/+37
| | | | | | | | We created a local typedef for `std::basic_string<char, std::char_traits<char>>` which is just `std::string`. Remove the local typedef and propagate the type information through the rest of the demangler. NFC. llvm-svn: 287470
* Demangle: use direct member initialization (NFC)Saleem Abdulrasool2016-11-201-14/+7
| | | | | | | Prefer direct member initialization over the explicit out-of-line initialization for the construction of the local type. NFC. llvm-svn: 287469
* Demangle: only demangle mangled symbolsSaleem Abdulrasool2016-11-141-1/+10
| | | | | | | | | | | | Only attempt to demangle symbols which have the itanium C++ prefix of `_Z`. This ensures that we do not treat any symbol name as a managled named. We would previously treat a C function `f` as a mangled name and decode that to `float` incorrectly. While it is easy to add tests for this, Mehdi recommended against introducing tests for the demangler as libc++abi should cover the testing. llvm-svn: 286795
* Avoid using alignas and constexpr.Rafael Espindola2016-09-061-136/+5
| | | | | | | This requires removing the custom allocator, since Demangle cannot depend on Support and so cannot use Compiler.h. llvm-svn: 280750
* Fix ItaniumDemangle.cpp build with MSVC 2013Reid Kleckner2016-09-061-18/+19
| | | | llvm-svn: 280740
* Add an c++ itanium demangler to llvm.Rafael Espindola2016-09-061-0/+4431
This adds a copy of the demangler in libcxxabi. The code also has no dependencies on anything else in LLVM. To enforce that I added it as another library. That way a BUILD_SHARED_LIBS will fail if anyone adds an use of StringRef for example. The no llvm dependency combined with the fact that this has to build on linux, OS X and Windows required a few changes to the code. In particular: No constexpr. No alignas On OS X at least this library has only one global symbol: __ZN4llvm16itanium_demangleEPKcPcPmPi My current plan is: Commit something like this Change lld to use it Change lldb to use it as the fallback Add a few #ifdefs so that exactly the same file can be used in libcxxabi to export abi::__cxa_demangle. Once the fast demangler in lldb can handle any names this implementation can be replaced with it and we will have the one true demangler. llvm-svn: 280732
OpenPOWER on IntegriCloud