[llvm] r292965 - Demangle: avoid butchering parameter type

Saleem Abdulrasool via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 24 18:25:31 PST 2017


Yes, there is: I added one to libc++abi in fact.  This has been a previous
point of contention between myself and others.  I feel like we should be
duplicating the libc++abi test suite for demangling (which is a pretty
large set) in LLVM as we duplicate the demangler.

On Tue, Jan 24, 2017 at 11:08 AM, Aaron Ballman <aaron at aaronballman.com>
wrote:

> On Tue, Jan 24, 2017 at 1:52 PM, Saleem Abdulrasool via llvm-commits
> <llvm-commits at lists.llvm.org> wrote:
> > Author: compnerd
> > Date: Tue Jan 24 12:52:19 2017
> > New Revision: 292965
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=292965&view=rev
> > Log:
> > Demangle: avoid butchering parameter type
> >
> > 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.
> >
> > Modified:
> >     llvm/trunk/lib/Demangle/ItaniumDemangle.cpp
>
> Is there a way to provide a test case for this?
>
> ~Aaron
>
> >
> > Modified: llvm/trunk/lib/Demangle/ItaniumDemangle.cpp
> > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/
> Demangle/ItaniumDemangle.cpp?rev=292965&r1=292964&r2=292965&view=diff
> > ============================================================
> ==================
> > --- llvm/trunk/lib/Demangle/ItaniumDemangle.cpp (original)
> > +++ llvm/trunk/lib/Demangle/ItaniumDemangle.cpp Tue Jan 24 12:52:19 2017
> > @@ -1665,9 +1665,9 @@ static const char *parse_type(const char
> >              if (is_function) {
> >                size_t p = db.names[k].second.size();
> >                if (db.names[k].second[p - 2] == '&')
> > -                p -= 3;
> > -              else if (db.names[k].second.back() == '&')
> >                  p -= 2;
> > +              else if (db.names[k].second.back() == '&')
> > +                p -= 1;
> >                if (cv & 1) {
> >                  db.names[k].second.insert(p, " const");
> >                  p += 6;
> >
> >
> > _______________________________________________
> > llvm-commits mailing list
> > llvm-commits at lists.llvm.org
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>



-- 
Saleem Abdulrasool
compnerd (at) compnerd (dot) org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170124/58c822d8/attachment.html>


More information about the llvm-commits mailing list