<div dir="ltr">One thing I'd noticed in the past is that the existing libcxxabi cxa_demangle.o code is *MUCH* smaller when compiled by GCC, vs the same code compiled by clang.<div><br></div><div>On ARM, it was approximately 40K (gcc -Os), 50K (gcc -O2), 70K (clang -Os), 115K (clang -O2) of TEXT.</div><div><div class="gmail_extra"><br></div><div class="gmail_extra">I didn't investigate any further, but that seemed somewhat striking.</div></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jun 22, 2017 at 11:47 AM, Joerg Sonnenberger via llvm-dev <span dir="ltr"><<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Thu, Jun 22, 2017 at 08:34:02AM -0700, Erik Pilkington wrote:<br>
><br>
><br>
> On 6/22/17 7:50 AM, Joerg Sonnenberger via llvm-dev wrote:<br>
> > On Wed, Jun 21, 2017 at 04:42:40PM -0700, Erik Pilkington via llvm-dev wrote:<br>
> > > I've been working on fixing this by parsing first into an AST structure, and<br>
> > > then traversing that AST to produce a demangled string. This provides a<br>
> > > significant performance improvement and also make the demangler somewhat<br>
> > > more clean.<br>
> > How does it far in terms of code size? One of the big problems with the<br>
> > libcxxabi demangler is its size. It's at least twice as large as the one<br>
> > in elftoolchain, even ignoring some possible feature differences.<br>
> Looks pretty good, I'm guessing this is because all the string operations<br>
> aren't getting inlined into the parser anymore.<br>
> Before this patch:<br>
> __TEXT    __DATA  __OBJC    others  dec       hex<br>
> 247293    0       0         1248    248541    3cadd<br>
> libc++abi.a(cxa_demangle.cpp.<wbr>o)<br>
><br>
> After this patch:<br>
> __TEXT    __DATA  __OBJC    others  dec       hex<br>
> 137723    4216    0         6016    147955    241f3<br>
> libc++abi.a(cxa_demangle.cpp.<wbr>o)<br>
<br>
</span>Better, but still huge compared to:<br>
<br>
   text    data     bss     dec     hex filename<br>
  44560       0       0   44560    ae10 rt_libelftc_dem_gnu3.pico<br>
<div class="HOEnZb"><div class="h5"><br>
Joerg<br>
______________________________<wbr>_________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-dev</a><br>
</div></div></blockquote></div><br></div>