[llvm-bugs] [Bug 34356] New: Microsoft mangling takes forever with large, deeply nested templates

via llvm-bugs llvm-bugs at lists.llvm.org
Mon Aug 28 23:58:21 PDT 2017


https://bugs.llvm.org/show_bug.cgi?id=34356

            Bug ID: 34356
           Summary: Microsoft mangling takes forever with large, deeply
                    nested templates
           Product: clang
           Version: trunk
          Hardware: PC
                OS: All
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: C++
          Assignee: unassignedclangbugs at nondot.org
          Reporter: george.burgess.iv at gmail.com
                CC: dgregor at apple.com, llvm-bugs at lists.llvm.org

Split from https://bugs.llvm.org/show_bug.cgi?id=29160, in hopes of making a
more targeted bug.

To reproduce, compile the test-case from said bug with:

$ clang -target i686-windows -fms-compatibility -fmsc-version=1700 tc.cpp
-DCHUNKS=N

(for values of N >= 15).

Looks like, as we approach -DCHUNKS=42, we're building up more and more massive
(>100MB) strings so we can potentially discard them and use a backreference
instead. (In particular, we do this in the `isTemplate()` branch in
MicrosoftCXXNameMangler::mangleUnqualifiedName). Blindly caching these sped up
execution time substantially (DCHUNKS=42 ran in ~5 minutes, instead of 35), but
also made clang use 21GB of RAM. This doesn't seem ideal.

I thought 100MB strings sounded large, but when I asked clang to -ast-dump the
program, I killed it after 2 hours and >200GB of output. So...

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20170829/c779440f/attachment.html>


More information about the llvm-bugs mailing list